--[[
	Map Position 1.1 by Husky and Manciuszz
	========================================================================

	Enables you to easily query the semantic position of a unit in the map.
	The jungle (as well as the river) is separated into inner and outer jungle
	to distinct roaming from warding champions.

	The following methods exist and return true if the unit is inside the
	specified area (or false otherwise):

	-- River Positions --------------------------------------------------------

	MapPosition:inRiver(unit)
	MapPosition:inTopRiver(unit)
	MapPosition:inTopInnerRiver(unit)
	MapPosition:inTopOuterRiver(unit)
	MapPosition:inBottomRiver(unit)
	MapPosition:inBottomInnerRiver(unit)
	MapPosition:inBottomOuterRiver(unit)
	MapPosition:inOuterRiver(unit)
	MapPosition:inInnerRiver(unit)

	-- Base Positions ---------------------------------------------------------

	MapPosition:inBase(unit)
	MapPosition:inLeftBase(unit)
	MapPosition:inRightBase(unit)

	-- Lane Positions ---------------------------------------------------------

	MapPosition:onLane(unit)
	MapPosition:onTopLane(unit)
	MapPosition:onMidLane(unit)
	MapPosition:onBotLane(unit)

	-- Jungle Positions -------------------------------------------------------

	MapPosition:inJungle(unit)
	MapPosition:inOuterJungle(unit)
	MapPosition:inInnerJungle(unit)
	MapPosition:inLeftJungle(unit)
	MapPosition:inLeftOuterJungle(unit)
	MapPosition:inLeftInnerJungle(unit)
	MapPosition:inTopLeftJungle(unit)
	MapPosition:inTopLeftOuterJungle(unit)
	MapPosition:inTopLeftInnerJungle(unit)
	MapPosition:inBottomLeftJungle(unit)
	MapPosition:inBottomLeftOuterJungle(unit)
	MapPosition:inBottomLeftInnerJungle(unit)
	MapPosition:inRightJungle(unit)
	MapPosition:inRightOuterJungle(unit)
	MapPosition:inRightInnerJungle(unit)
	MapPosition:inTopRightJungle(unit)
	MapPosition:inTopRightOuterJungle(unit)
	MapPosition:inTopRightInnerJungle(unit)
	MapPosition:inBottomRightJungle(unit)
	MapPosition:inBottomRightOuterJungle(unit)
	MapPosition:inBottomRightInnerJungle(unit)
	MapPosition:inTopJungle(unit)
	MapPosition:inTopOuterJungle(unit)
	MapPosition:inTopInnerJungle(unit)
	MapPosition:inBottomJungle(unit)
	MapPosition:inBottomOuterJungle(unit)
	MapPosition:inBottomInnerJungle(unit)


	The following methods return true if the point is inside a wall or
	intersects a wall:

	-- Wall Functions ---------------------------------------------------------

	MapPosition:inWall(point)
	MapPosition:intersectsWall(pointOrLinesegment)

	Changelog
	~~~~~~~~~

	1.0	- initial release with the most important map areas (jungle, river,
		  lanes and so on)
	1.1	- added walls and the corresponding query methods
		- added a spatial hashmap for faster realtime queries
		- added caching for instant loading
]]

-- Dependencies ----------------------------------------------------------------

-- require "2DGeometry"

-- Config ----------------------------------------------------------------------

regions = {
	topLeftOuterJungle     = Polygon(Point(1477, 4747),  Point(1502, 11232), Point(5951, 7201),   Point(3169, 4379)),
	topLeftInnerJungle     = Polygon(Point(3090, 5144),  Point(2071, 5398),  Point(2088, 10702),  Point(5439, 7665)),
	topOuterRiver          = Polygon(Point(5951, 7201),  Point(1502, 11232), Point(2883, 12752),  Point(7001, 7957)),
	topInnerRiver          = Polygon(Point(5439, 7665),  Point(2088, 10702), Point(3454, 12086),  Point(6503, 8537)),
	topRightOuterJungle    = Polygon(Point(7001, 7957),  Point(2883, 12752), Point(9465, 12832),  Point(9830, 11003)),
	topRightInnerJungle    = Polygon(Point(6503, 8537),  Point(3454, 12086), Point(8825, 12137),  Point(9085, 11115)),
	bottomLeftOuterJungle  = Polygon(Point(4112, 3575),  Point(6969, 6416),  Point(10922, 1920),  Point(4486, 1784)),
	bottomLeftInnerJungle  = Polygon(Point(5132, 2358),  Point(4963, 3448),  Point(7499, 5798),   Point(10421, 2489)),
	bottomOuterRiver       = Polygon(Point(10922, 1920), Point(6969, 6416),  Point(8192, 7207),   Point(12552, 3442)),
	bottomInnerRiver       = Polygon(Point(10421, 2489), Point(7499, 5798),  Point(8742, 6731),   Point(11947, 3964)),
	bottomRightOuterJungle = Polygon(Point(12552, 3442), Point(8192, 7207),  Point(10693, 10119), Point(12610, 9769)),
	bottomRightInnerJungle = Polygon(Point(11947, 3964), Point(8742, 6731),  Point(11076, 9373),  Point(11998, 9234)),
	leftMidLane            = Polygon(Point(3169, 4379),  Point(5951, 7201),  Point(6969, 6416),   Point(4112, 3575)),
	centerMidLane          = Polygon(Point(6969, 6416),  Point(5951, 7201),  Point(7001, 7957),   Point(8192, 7207)),
	rightMidLane           = Polygon(Point(8192, 7207),  Point(7001, 7957),  Point(9830, 11003),  Point(10693, 10119)),
	leftBotLane            = Polygon(Point(4502, 492),   Point(4486, 1784),  Point(10922, 1920),  Point(12183, 485)),
	centerBotLane          = Polygon(Point(12183, 485),  Point(10922, 1920), Point(12552, 3442),  Point(13985, 2204)),
	rightBotLane           = Polygon(Point(13985, 2204), Point(12552, 3442), Point(12610, 9769),  Point(14018, 9792)),
	leftTopLane            = Polygon(Point(23, 4744),    Point(9, 12584),    Point(1502, 11232),  Point(1477, 4747)),
	centerTopLane          = Polygon(Point(1502, 11232), Point(9, 12584),    Point(1547, 14305),  Point(2883, 12752)),
	rightTopLane           = Polygon(Point(2883, 12752), Point(1547, 14305), Point(9419, 14299),  Point(9465, 12832))
}

walls = {
	Polygon(Point(8697.0595703125, 4610.6459960938), Point(8576.7177734375, 4711.4995117188), Point(8458.88671875, 4841.6059570313), Point(8341.3466796875, 4917.2241210938), Point(8262.7470703125, 5006.9565429688), Point(8294.521484375, 5136.1840820313), Point(8385.4765625, 5204.701171875), Point(8513.78125, 5204.4111328125), Point(8665.462890625, 5178.8334960938), Point(8820.1669921875, 5141.6323242188), Point(8967.1220703125, 5111.1997070313), Point(9112.9111328125, 5068.08984375), Point(9243.828125, 4996.6420898438), Point(9382.6865234375, 4933.0263671875), Point(9516.2109375, 4872.705078125), Point(9549.22265625, 4773.5561523438), Point(9491.236328125, 4699.9497070313), Point(9359.15625, 4773.7797851563), Point(9154.328125, 4742.6088867188), Point(9013.6484375, 4589.1333007813), Point(8952.6875, 4427.99609375), Point(8920.1513671875, 4275.0751953125), Point(8919.341796875, 4109.9272460938), Point(8972.5634765625, 3958.8898925781), Point(9089.234375, 3857.0417480469), Point(9222.728515625, 3769.9497070313), Point(9338.5458984375, 3656.3537597656), Point(9501.734375, 3641.9694824219), Point(9663.2216796875, 3679.7104492188), Point(9778.4013671875, 3786.6740722656), Point(9884.3466796875, 3900.5710449219), Point(10012.1484375, 3996.1599121094), Point(10060.795898438, 4158.8774414063), Point(9988.2998046875, 4305.2944335938), Point(9925.875, 4424.45703125), Point(9987.6201171875, 4496.6186523438), Point(10093.018554688, 4439.9467773438), Point(10204.922851563, 4348.8623046875), Point(10305.951171875, 4234.6645507813), Point(10418.0546875, 4140.193359375), Point(10476.965820313, 4012.1672363281), Point(10548.491210938, 3883.01171875), Point(10587, 3745.6052246094), Point(10573.125, 3607.1862792969), Point(10528.126953125, 3493.6228027344), Point(10410.384765625, 3442.7958984375), Point(10260.192382813, 3436.2700195313), Point(10093.0625, 3421.173828125), Point(10007.512695313, 3280.4008789063), Point(9989.9033203125, 3131.0661621094), Point(9877.3759765625, 3041.6181640625), Point(9742.3046875, 3051.8032226563), Point(9618.2939453125, 3128.8962402344), Point(9489.37890625, 3208.1491699219), Point(9348.2080078125, 3281.4846191406), Point(9201.5009765625, 3318.5361328125), Point(9077.25390625, 3407.7160644531), Point(8963.53515625, 3509.92578125), Point(8857.3369140625, 3619.3430175781), Point(8765.1328125, 3745.5297851563), Point(8737.2529296875, 3888.4191894531), Point(8666.4443359375, 4019.0078125), Point(8664.0185546875, 4173.2744140625), Point(8651.90625, 4324.2670898438), Point(8687.52734375, 4477.2504882813)),
	Polygon(Point(7655.9018554688, 13298.0546875), Point(7593.2744140625, 13343.015625), Point(7509.5131835938, 13331.124023438), Point(7439.0424804688, 13294.337890625), Point(7407.0698242188, 13243.55078125), Point(7404.1743164063, 13180.677734375), Point(7421.8647460938, 13108.407226563), Point(7478.6596679688, 13062.251953125), Point(7551.6362304688, 13037.319335938), Point(7622.6240234375, 13062.022460938), Point(7678.1137695313, 13104.943359375), Point(7683.2983398438, 13180.294921875), Point(7672.8984375, 13266.1796875)),
	Polygon(Point(2140.2067871094, 3686.3974609375), Point(2190.771484375, 3731.310546875), Point(2223.0444335938, 3785.28515625), Point(2250.7824707031, 3830.00390625), Point(2201.7458496094, 3854.4228515625), Point(2158.205078125, 3899.1320800781), Point(2100.7082519531, 3896.6918945313), Point(2039.7847900391, 3901.6442871094), Point(1981.8719482422, 3887.11328125), Point(1962.1760253906, 3827.7651367188), Point(1947.5880126953, 3775.2280273438), Point(1961.8597412109, 3722.8916015625), Point(1969.8880615234, 3667.8071289063), Point(1999.3360595703, 3641.083984375), Point(2061.4204101563, 3623.0991210938), Point(2125.9274902344, 3626.5688476563)),
	Polygon(Point(12973, 7887), Point(13038.6171875, 7919.3994140625), Point(13068.72265625, 8003.2177734375), Point(13065.514648438, 8071.6923828125), Point(13028.596679688, 8131.3081054688), Point(12955.520507813, 8160.6245117188), Point(12874.462890625, 8141.2451171875), Point(12819.162109375, 8106.1225585938), Point(12781.553710938, 8024.0263671875), Point(12789.702148438, 7952.7373046875), Point(12834.620117188, 7894.3657226563), Point(12899.438476563, 7868.9462890625)),
	Polygon(Point(2710.7353515625, 2817.5307617188), Point(2787.0388183594, 2793.6862792969), Point(2858.5197753906, 2782.4375), Point(2905.1145019531, 2830.9038085938), Point(2959.0546875, 2887.9331054688), Point(2979.3308105469, 2967.4841308594), Point(2970.4765625, 3049.4604492188), Point(2910.373046875, 3102.4621582031), Point(2856.75, 3143.5297851563), Point(2804.7001953125, 3164.2336425781), Point(2734.7082519531, 3149.2707519531), Point(2674.7141113281, 3120.0222167969), Point(2617.1826171875, 3083.3059082031), Point(2601.3615722656, 3002.2360839844), Point(2610.6770019531, 2925.5231933594), Point(2618.3447265625, 2868.2900390625), Point(2664.6650390625, 2833.8371582031)),
	Polygon(Point(4447.0327148438, 544.1337890625), Point(4300.6909179688, 513.02258300781), Point(4167.4873046875, 431.34368896484), Point(4035.3010253906, 335.97311401367), Point(3843.3579101563, 287.05416870117), Point(3662.9313964844, 297.01138305664), Point(3503.1306152344, 313.78234863281), Point(3341.8537597656, 313.25561523438), Point(3200.728515625, 309.67272949219), Point(3042.4890136719, 303.04229736328), Point(2871.4877929688, 305.32452392578), Point(2706.1706542969, 289.6005859375), Point(2536.3693847656, 337.66983032227), Point(2362.5104980469, 364.60162353516), Point(2204.8903808594, 361.92004394531), Point(2038.5762939453, 359.84494018555), Point(1880.1105957031, 358.60241699219), Point(1731.974609375, 358.462890625), Point(1575.2667236328, 358.91915893555), Point(1400.083984375, 361.76605224609), Point(1255.9919433594, 355.03555297852), Point(1148.0513916016, 337.78216552734), Point(1071.0505371094, 293.60302734375), Point(1157.4111328125, 47.846801757813), Point(1294.7666015625, -18.96728515625), Point(1450.6030273438, 38.7373046875), Point(1606.7318115234, -10.276977539063), Point(1790.412109375, -50.921264648438), Point(1952.5502929688, -69.113037109375), Point(2113.5615234375, -72.636596679688), Point(2235.3688964844, 27.518798828125), Point(2532.8129882813, 27.747802734375), Point(2754.8979492188, 6.2874755859375), Point(2953.9030761719, -4.337158203125), Point(3142.3759765625, -7.9166259765625), Point(3295.798828125, 13.72802734375), Point(3497.0671386719, -57.106079101563), Point(3663.2424316406, -8.9603271484375), Point(3827.1748046875, -52.173095703125), Point(3985.4379882813, -9.7239990234375), Point(4136.375, 17.610229492188), Point(4307.326171875, 65.212646484375), Point(4538.0395507813, 246.32556152344), Point(4679.8569335938, 335.34997558594), Point(4726.9189453125, 482.7890625), Point(4572.1748046875, 535.95666503906)),
	Polygon(Point(13542.01953125, 4175.1762695313), Point(13577.971679688, 4236.83984375), Point(13606.165039063, 4311.7587890625), Point(13578.9609375, 4363.5249023438), Point(13530.989257813, 4424.7470703125), Point(13465.743164063, 4427.5952148438), Point(13389.873046875, 4406.2875976563), Point(13319.759765625, 4377.7211914063), Point(13303.983398438, 4296.8032226563), Point(13310.2265625, 4222.1240234375), Point(13353.21875, 4166.7260742188), Point(13420.596679688, 4140.6235351563), Point(13495.818359375, 4128.86328125)),
	Polygon(Point(10921.734375, 7735.4497070313), Point(10813.59765625, 7632.4458007813), Point(10677.525390625, 7573.9311523438), Point(10540.594726563, 7517.5087890625), Point(10388.516601563, 7514.0395507813), Point(10236.024414063, 7520.4926757813), Point(10114.548828125, 7601.9916992188), Point(9994.0380859375, 7690.0766601563), Point(9907.470703125, 7798.9780273438), Point(9879.3115234375, 7925.02734375), Point(9912.5615234375, 8064.3984375), Point(9933.9521484375, 8220.931640625), Point(10029.416992188, 8339.3173828125), Point(10149.473632813, 8432.130859375), Point(10266.16015625, 8527.49609375), Point(10417.126953125, 8509.0634765625), Point(10400.080078125, 8370.8623046875), Point(10374.669921875, 8231.4970703125), Point(10327.518554688, 8049.046875), Point(10487.69921875, 7926.7260742188), Point(10650.327148438, 7963.271484375), Point(10794.369140625, 8011.8203125), Point(10943.384765625, 8033.0258789063), Point(11020.147460938, 7897.5620117188)),
	Polygon(Point(13081.583984375, 11007.723632813), Point(13211.649414063, 10955.743164063), Point(13333.584960938, 10993.270507813), Point(13407.999023438, 11123.762695313), Point(13419.474609375, 11254.888671875), Point(13331.2265625, 11362.545898438), Point(13188.588867188, 11395.520507813), Point(13076.201171875, 11319.875), Point(12997.2421875, 11207.755859375), Point(13012.129882813, 11068.17578125)),
	Polygon(Point(5030.8881835938, 12502.249023438), Point(4925.861328125, 12617.115234375), Point(4891.6240234375, 12778.34375), Point(4790.9877929688, 12894.608398438), Point(4638.486328125, 12902.497070313), Point(4483.1567382813, 12892.208007813), Point(4331.349609375, 12893.640625), Point(4191.26171875, 12938.754882813), Point(4035.9086914063, 12936.192382813), Point(3901.2568359375, 12878.40625), Point(3783.1572265625, 12813.013671875), Point(3759.37890625, 12685.021484375), Point(3794.9775390625, 12568.975585938), Point(3893.0661621094, 12487.595703125), Point(4039.0573730469, 12474.875976563), Point(4194.529296875, 12473.8515625), Point(4354.6196289063, 12477.889648438), Point(4509.48046875, 12408.653320313), Point(4624.8955078125, 12310.604492188), Point(4759.3671875, 12266.213867188), Point(4903.8481445313, 12277.275390625), Point(5011.7802734375, 12369.776367188)),
	Polygon(Point(97, 2515), Point(84.473571777344, 2358.4470214844), Point(85.60888671875, 2174.4755859375), Point(70.819381713867, 2018.9019775391), Point(97.004661560059, 1853.8172607422), Point(85.829437255859, 1695.953125), Point(72.420989990234, 1540.1826171875), Point(83.664489746094, 1383.1704101563), Point(75.023422241211, 1216.5578613281), Point(83.898422241211, 1060.2846679688), Point(138.31665039063, 902.82800292969), Point(76.089454650879, 765.50207519531), Point(-40.944610595703, 695.86926269531), Point(-174.07600402832, 643.64196777344), Point(-246.7126159668, 502.60150146484), Point(-262.44470214844, 655.84289550781), Point(-205.38549804688, 798.48449707031), Point(-194.4580078125, 1009.1535644531), Point(-180.19543457031, 1275.9649658203), Point(-229.16534423828, 1426.5238037109), Point(-189.89392089844, 1591.615234375), Point(-196.55786132813, 1767.4064941406), Point(-181.60803222656, 1939.6745605469), Point(-264.33453369141, 2065.0078125), Point(-233.21691894531, 2220.7814941406), Point(-203.26867675781, 2375.5717773438), Point(-185.79208374023, 2526.0810546875), Point(-33.841827392578, 2582.5847167969)),
	Polygon(Point(12205.662109375, 5239.3583984375), Point(12249.096679688, 5375.779296875), Point(12314.4765625, 5517.8061523438), Point(12380.190429688, 5652.0390625), Point(12459.640625, 5788.6083984375), Point(12466.067382813, 5954.2465820313), Point(12447.983398438, 6104.1318359375), Point(12374.580078125, 6236.861328125), Point(12275.37109375, 6350.9448242188), Point(12170.42578125, 6477.8818359375), Point(12025.47265625, 6554.291015625), Point(11882.491210938, 6593.0385742188), Point(11755.353515625, 6661.0908203125), Point(11668.243164063, 6785.6469726563), Point(11687.133789063, 6942.9951171875), Point(11805.010742188, 7044.9389648438), Point(11952.596679688, 7044.2534179688), Point(12058.228515625, 6928.8505859375), Point(12186.615234375, 6852.599609375), Point(12303.870117188, 6753.5190429688), Point(12443.709960938, 6660.7080078125), Point(12601.55078125, 6664.0493164063), Point(12664.939453125, 6521.9697265625), Point(12705.21484375, 6382.685546875), Point(12743.444335938, 6221.1259765625), Point(12744.279296875, 6062.2631835938), Point(12744.176757813, 5903.560546875), Point(12744.258789063, 5753.4584960938), Point(12734.407226563, 5594.5078125), Point(12690.301757813, 5441.3120117188), Point(12605.399414063, 5318.1884765625), Point(12459.932617188, 5271.447265625), Point(12328.098632813, 5182.5092773438)),
	Polygon(Point(7797.0297851563, 13922.1484375), Point(7986.4936523438, 13936.237304688), Point(8156.7299804688, 13919.7578125), Point(8353.17578125, 13934.819335938), Point(8505.724609375, 13930.266601563), Point(8685.328125, 13933.915039063), Point(8899.9248046875, 13940.170898438), Point(9054.251953125, 13913.10546875), Point(9221.3876953125, 13935.837890625), Point(9438.435546875, 13916.505859375), Point(9592.12109375, 13936.272460938), Point(9763.8896484375, 13921.875976563), Point(9908.0927734375, 13973.771484375), Point(10026.204101563, 14079.188476563), Point(10169.916015625, 14187.174804688), Point(10342.219726563, 14167.518554688), Point(10507.4921875, 14168.848632813), Point(10674.395507813, 14171.626953125), Point(10830.758789063, 14175.030273438), Point(11002.836914063, 14174.390625), Point(11165.643554688, 14171.201171875), Point(11333.830078125, 14173.877929688), Point(11483.290039063, 14173.490234375), Point(11647.344726563, 14164.872070313), Point(11816.162109375, 14216.002929688), Point(11915.680664063, 14338.448242188), Point(11966.575195313, 14496.4765625), Point(11794.596679688, 14475.193359375), Point(11628.44921875, 14515.424804688), Point(11466.970703125, 14508.609375), Point(11246.899414063, 14508.716796875), Point(11056.96484375, 14515.447265625), Point(10826.850585938, 14515.4453125), Point(10650.592773438, 14515.447265625), Point(10449.567382813, 14508.642578125), Point(10277.994140625, 14488.3046875), Point(10073.203125, 14481.551757813), Point(9883.40234375, 14474.810546875), Point(9708.1435546875, 14474.779296875), Point(9436.2841796875, 14494.62890625), Point(9270.4267578125, 14493.698242188), Point(9067.73828125, 14493.154296875), Point(8874.087890625, 14466.646484375), Point(8722.7919921875, 14474.173828125), Point(8532.58984375, 14474.911132813), Point(8350.611328125, 14482.57421875), Point(8185.6870117188, 14512.376953125), Point(8019.5, 14499.349609375), Point(7837.6572265625, 14494.537109375), Point(7677.1611328125, 14500.564453125), Point(7522.8681640625, 14513.428710938), Point(7485.2197265625, 14353.750976563), Point(7485.6010742188, 14189.747070313), Point(7548.0141601563, 14044.349609375), Point(7664.984375, 13936.747070313)),
	Polygon(Point(11468.034179688, 14185.904296875), Point(11599.803710938, 14167.62109375), Point(11750.900390625, 14166.409179688), Point(11927.55859375, 14181.747070313), Point(12101.28515625, 14163.194335938), Point(12252.701171875, 14174.421875), Point(12423.849609375, 14168.665039063), Point(12597.619140625, 14172.604492188), Point(12758.377929688, 14188.540039063), Point(12913.119140625, 14147.44921875), Point(13054.053710938, 14106.259765625), Point(13211.189453125, 14050.71484375), Point(13371.126953125, 14031.955078125), Point(13483.655273438, 14133.330078125), Point(13563.584960938, 14259.865234375), Point(13655.815429688, 14368.860351563), Point(13544.387695313, 14472.224609375), Point(13391.2421875, 14454.859375), Point(13234.743164063, 14499.39453125), Point(13080.786132813, 14505.0703125), Point(12926.294921875, 14511.368164063), Point(12774.329101563, 14498.803710938), Point(12624.40234375, 14505.080078125), Point(12440.559570313, 14467.684570313), Point(12266.681640625, 14480.265625), Point(12101.641601563, 14492.947265625), Point(11950.196289063, 14512.0625), Point(11778.8671875, 14474.868164063), Point(11623.126953125, 14492.91796875), Point(11473.026367188, 14473.661132813), Point(11371.114257813, 14346.84765625)),
	Polygon(Point(1014.9705810547, 1134.8798828125), Point(1149.0423583984, 1073.5440673828), Point(1292.8162841797, 1087.4692382813), Point(1408.6950683594, 1186.0782470703), Point(1506.7609863281, 1297.8879394531), Point(1528.8099365234, 1438.0501708984), Point(1504.9909667969, 1582.4613037109), Point(1410.0852050781, 1698.9234619141), Point(1292.3995361328, 1800.2034912109), Point(1141.396484375, 1801.6553955078), Point(1006.0390625, 1746.1065673828), Point(899.03283691406, 1642.2501220703), Point(828.64129638672, 1522.0921630859), Point(808.24542236328, 1395.7105712891), Point(851.88665771484, 1262.8924560547)),
	Polygon(Point(2049.8444824219, 7428.9750976563), Point(2181.3137207031, 7429.5869140625), Point(2299.9519042969, 7499.5512695313), Point(2347.1726074219, 7590.8286132813), Point(2340.8217773438, 7690.1240234375), Point(2236.1135253906, 7781.7495117188), Point(2117.1870117188, 7868.7978515625), Point(1980.8807373047, 7934.2822265625), Point(1839.4114990234, 8001.0009765625), Point(1735.8023681641, 8117.8129882813), Point(1650.2670898438, 8240.876953125), Point(1576.8803710938, 8374.1044921875), Point(1579.1323242188, 8530.927734375), Point(1598.5205078125, 8688.220703125), Point(1669.8853759766, 8828.5537109375), Point(1733.2641601563, 8965.8720703125), Point(1794.7004394531, 9102.0322265625), Point(1817.6999511719, 9235.23046875), Point(1733.4553222656, 9254.80859375), Point(1638.4611816406, 9202.7978515625), Point(1490.9324951172, 9152.322265625), Point(1383.8260498047, 9078.8837890625), Point(1308.505859375, 8972.275390625), Point(1298.9094238281, 8820.287109375), Point(1297.2857666016, 8668.9140625), Point(1312.798828125, 8516.994140625), Point(1320.9633789063, 8365.8203125), Point(1309.5870361328, 8213.689453125), Point(1306.7562255859, 8060.0595703125), Point(1316.3363037109, 7915.05078125), Point(1386.1088867188, 7784.8618164063), Point(1538.2540283203, 7771.888671875), Point(1683.7974853516, 7723.8530273438), Point(1808.4484863281, 7640.62890625), Point(1923.5517578125, 7545.767578125)),
	Polygon(Point(3864.9099121094, 1109.6508789063), Point(3827.0012207031, 1163.1072998047), Point(3779.0415039063, 1191.2055664063), Point(3716.5617675781, 1191.2451171875), Point(3665.6540527344, 1168.1160888672), Point(3643.98046875, 1121.6478271484), Point(3635.2395019531, 1084.4252929688), Point(3617.8098144531, 1035.3427734375), Point(3615.8186035156, 987.36627197266), Point(3656.5637207031, 943.26092529297), Point(3696.6381835938, 922.48193359375), Point(3747.4477539063, 890.36010742188), Point(3801.0012207031, 906.33355712891), Point(3849.3442382813, 937.20751953125), Point(3867.3200683594, 993.30743408203), Point(3880.2888183594, 1053.6722412109)),
	Polygon(Point(6444.1162109375, 5358.1728515625), Point(6436.9130859375, 5199.6147460938), Point(6398.6669921875, 5054.8583984375), Point(6377.083984375, 4907.6103515625), Point(6332.7578125, 4763.4555664063), Point(6292.234375, 4622.3041992188), Point(6152.00390625, 4571.3627929688), Point(6069.2080078125, 4649.9169921875), Point(6052.9008789063, 4768.5903320313), Point(6061.83984375, 4926.990234375), Point(6002.1826171875, 5098.7075195313), Point(5813.9990234375, 5127.4389648438), Point(5657.4345703125, 5099.3173828125), Point(5527.1645507813, 5042.7446289063), Point(5449.4604492188, 5097.8989257813), Point(5525.9501953125, 5159.5541992188), Point(5614.7236328125, 5262.6376953125), Point(5713.8247070313, 5363.5810546875), Point(5817.9853515625, 5472.6723632813), Point(5926.3798828125, 5578.4638671875), Point(6039.658203125, 5687.4399414063), Point(6128.5112304688, 5808.564453125), Point(6214.4829101563, 5930.412109375), Point(6344.197265625, 5999.6938476563), Point(6489.6000976563, 5990.7133789063), Point(6603.7016601563, 5889.3784179688), Point(6733.2241210938, 5808.8579101563), Point(6835.6459960938, 5706.3549804688), Point(6953.5961914063, 5609.1528320313), Point(7088.5102539063, 5524.25390625), Point(7213.7836914063, 5430.7036132813), Point(7309.431640625, 5332.3471679688), Point(7327.4301757813, 5191.5380859375), Point(7314.2490234375, 5050.1108398438), Point(7172.6708984375, 5037.2705078125), Point(7023.4096679688, 5018.1533203125), Point(6865.0693359375, 5018.6484375), Point(6780.1318359375, 5125.7280273438), Point(6771.2690429688, 5274.7666015625), Point(6636.3618164063, 5382.8666992188)),
	Polygon(Point(8590.3916015625, 11188.000976563), Point(8735.34765625, 11167.143554688), Point(8834.4072265625, 11257.999023438), Point(8887.7861328125, 11393.815429688), Point(9029.8525390625, 11464.8671875), Point(9034.3173828125, 11613.513671875), Point(9037.2294921875, 11764.184570313), Point(9041.0673828125, 11922.866210938), Point(9042.619140625, 12073.112304688), Point(9043.5791015625, 12223.84375), Point(9043.625, 12374.391601563), Point(8995.8349609375, 12522.408203125), Point(8988.9951171875, 12676.21875), Point(8974.3251953125, 12815.076171875), Point(8865.4677734375, 12887.018554688), Point(8726.9169921875, 12910.436523438), Point(8586.552734375, 12890.111328125), Point(8569.203125, 12766.69140625), Point(8562.5595703125, 12638.606445313), Point(8552.724609375, 12496.03125), Point(8549.2607421875, 12342.150390625), Point(8561.794921875, 12178.51953125), Point(8438.55859375, 12064.904296875), Point(8304.044921875, 11996.892578125), Point(8212.0908203125, 11898.333007813), Point(8237.697265625, 11770.32421875), Point(8323.0732421875, 11643.181640625), Point(8378.58984375, 11498.453125), Point(8464.7080078125, 11373.46484375), Point(8531.63671875, 11242.852539063)),
	Polygon(Point(3092.9831542969, 6693.345703125), Point(3153.7604980469, 6751.4868164063), Point(3284.7241210938, 6831.7470703125), Point(3412.7399902344, 6896.5102539063), Point(3560.9758300781, 6914.2846679688), Point(3712.0158691406, 6914.8588867188), Point(3858.6040039063, 6905.9311523438), Point(3975.9428710938, 6827.6298828125), Point(4079.3276367188, 6727.796875), Point(4160.2299804688, 6601.8266601563), Point(4152.3608398438, 6448.1728515625), Point(4091.0817871094, 6300.0131835938), Point(4044.2690429688, 6159.8095703125), Point(3960.9211425781, 6032.0947265625), Point(3817.4233398438, 5958.1611328125), Point(3711.4602050781, 5927.4682617188), Point(3628.9633789063, 5925.2724609375), Point(3634.6020507813, 6061.64453125), Point(3604.2631835938, 6151.7563476563), Point(3652.7006835938, 6251.58984375), Point(3586.2131347656, 6392.396484375), Point(3502.0883789063, 6549.46875), Point(3331.3132324219, 6526.888671875), Point(3188.7927246094, 6467.0454101563), Point(3087.634765625, 6522.5185546875), Point(3126.4431152344, 6664.3569335938)),
	Polygon(Point(4045.9921875, 13616.072265625), Point(4040.0209960938, 13686.666015625), Point(4017.2634277344, 13755.075195313), Point(3965.6994628906, 13783.194335938), Point(3906.2888183594, 13788.198242188), Point(3846.056640625, 13788.541015625), Point(3791.2932128906, 13740.084960938), Point(3758.4028320313, 13687.474609375), Point(3765.1215820313, 13628.049804688), Point(3805.9343261719, 13571.407226563), Point(3867.5561523438, 13519.030273438), Point(3952.1599121094, 13528.349609375), Point(4008.5437011719, 13554.51171875)),
	Polygon(Point(317.64706420898, 10111.854492188), Point(346.46527099609, 10285.2265625), Point(341.54528808594, 10448.196289063), Point(380.01303100586, 10604.725585938), Point(401.32537841797, 10870.240234375), Point(422.02456665039, 11053.985351563), Point(469.62615966797, 11214.314453125), Point(487.83868408203, 11378.09375), Point(502.35882568359, 11535.930664063), Point(537.55139160156, 11698.19140625), Point(583.27105712891, 11847.984375), Point(641.57977294922, 12004.41796875), Point(696.69860839844, 12145.006835938), Point(773.90118408203, 12297.387695313), Point(849.56469726563, 12457.040039063), Point(924.09259033203, 12587.543945313), Point(1026.0162353516, 12746.345703125), Point(1097.4787597656, 12888.291992188), Point(1132.1342773438, 13051.921875), Point(1044.0837402344, 13188.234375), Point(879.88958740234, 13223.014648438), Point(699.36926269531, 13231.39453125), Point(524.97375488281, 13213.07421875), Point(353.35113525391, 13168.77734375), Point(149.06640625, 13116.3203125), Point(-29.490051269531, 13045.53125), Point(-179.08557128906, 12970.081054688), Point(-222.58129882813, 12798.79296875), Point(-210.20092773438, 12640.016601563), Point(-190.14477539063, 12411.290039063), Point(-241.228515625, 12254.310546875), Point(-194.60974121094, 12014.813476563), Point(-241.78845214844, 11804.4140625), Point(-264.10986328125, 11636.208007813), Point(-269.13146972656, 11371.583984375), Point(-252.28063964844, 11219.764648438), Point(-251.02722167969, 11003.731445313), Point(-287.98742675781, 10850.169921875), Point(-237.86511230469, 10701.430664063), Point(-190.94885253906, 10549.936523438), Point(-239.80859375, 10358.69921875), Point(-197.64318847656, 10198.438476563), Point(-215.52734375, 10043.186523438), Point(-89.397338867188, 9948.10546875), Point(73.547241210938, 9906.13671875), Point(232.86712646484, 9922.810546875)),
	Polygon(Point(2897.3913574219, 9069.7568359375), Point(2858.2316894531, 9154.3779296875), Point(2854.0324707031, 9293.06640625), Point(2860.1103515625, 9457.802734375), Point(2798.1169433594, 9608.6064453125), Point(2718.5068359375, 9745.3955078125), Point(2647.1765136719, 9888.9033203125), Point(2547.3488769531, 10003.903320313), Point(2457.2429199219, 10126.704101563), Point(2338.0952148438, 10235.877929688), Point(2179.779296875, 10202.109375), Point(2025.0095214844, 10180.725585938), Point(1902.1168212891, 10081.477539063), Point(1817.7095947266, 9948.8486328125), Point(1761.9168701172, 9811.1533203125), Point(1680.8874511719, 9705.2451171875), Point(1547.7702636719, 9639.9951171875), Point(1421.4656982422, 9595.63671875), Point(1350.1666259766, 9712.8828125), Point(1348.7365722656, 9868.2197265625), Point(1367.0095214844, 10021.849609375), Point(1368.9896240234, 10172.806640625), Point(1379.6824951172, 10328.293945313), Point(1410.3648681641, 10477.572265625), Point(1418.9846191406, 10632.680664063), Point(1424.5705566406, 10783.471679688), Point(1447.740234375, 10932.53515625), Point(1474.0234375, 11075.057617188), Point(1545.8083496094, 11200.209960938), Point(1625.7666015625, 11327.12890625), Point(1747.4654541016, 11415.940429688), Point(1865.8405761719, 11463.234375), Point(1984.3858642578, 11421.518554688), Point(2118.095703125, 11369.110351563), Point(2215.796875, 11256.854492188), Point(2320.87109375, 11159.91015625), Point(2368.8251953125, 11021.8046875), Point(2454.4343261719, 10893.82421875), Point(2518.2346191406, 10755.624023438), Point(2576.0388183594, 10615.705078125), Point(2650.2121582031, 10484.169921875), Point(2711.6318359375, 10347.880859375), Point(2765.6989746094, 10205.013671875), Point(2839.9177246094, 10060.946289063), Point(2901.3156738281, 9918.8955078125), Point(2966.845703125, 9773.9052734375), Point(3044.8811035156, 9640.609375), Point(3077.6486816406, 9493.5068359375), Point(3075.5390625, 9343.42578125), Point(3036.2353515625, 9199.892578125), Point(2951.2670898438, 9087.1083984375)),
	Polygon(Point(13929.76953125, 12430.975585938), Point(13920.932617188, 12276.484375), Point(13916.528320313, 12117.813476563), Point(13913.994140625, 11942.116210938), Point(13916.141601563, 11758.981445313), Point(13914.1796875, 11570.721679688), Point(13914.603515625, 11397.265625), Point(13912.799804688, 11202.280273438), Point(13938.829101563, 11016.228515625), Point(13910.5390625, 10853.2421875), Point(13891.24609375, 10717.940429688), Point(13874.956054688, 10588.5703125), Point(13854.278320313, 10448.984375), Point(13857.947265625, 10316.359375), Point(13869.462890625, 10176.80078125), Point(14025.118164063, 10167.381835938), Point(14179.044921875, 10181.524414063), Point(14184.802734375, 10378.484375), Point(14246.708007813, 10523.6328125), Point(14176.639648438, 10663.168945313), Point(14210.6015625, 10915.609375), Point(14211.44921875, 11106.61328125), Point(14208.193359375, 11292.841796875), Point(14214.545898438, 11500.477539063), Point(14226.70703125, 11700.028320313), Point(14243.814453125, 11889.401367188), Point(14170.37109375, 12054.989257813), Point(14187.837890625, 12216.982421875), Point(14204.392578125, 12370.51953125), Point(14207.099609375, 12531.055664063), Point(14232.22265625, 12682.655273438), Point(14088.356445313, 12736.209960938), Point(13950.046875, 12653.125)),
	Polygon(Point(13707.362304688, 8507.5654296875), Point(13702.521484375, 8344.728515625), Point(13695.442382813, 8191.0224609375), Point(13695.495117188, 8015.8076171875), Point(13708.2421875, 7796.8256835938), Point(13721.922851563, 7618.0244140625), Point(13702.908203125, 7377.791015625), Point(13704.670898438, 7175.4213867188), Point(13742.209960938, 7025.3618164063), Point(13769.274414063, 6848.451171875), Point(13763.609375, 6670.7646484375), Point(13747.387695313, 6481.8657226563), Point(13745.012695313, 6325.740234375), Point(13759.828125, 6138.2915039063), Point(13744.981445313, 5966.1831054688), Point(13758.215820313, 5851.6796875), Point(13760.2265625, 5768.98046875), Point(13724.203125, 5698.7705078125), Point(13862.549804688, 5664.1049804688), Point(14027.383789063, 5726.541015625), Point(14153.551757813, 5813.3828125), Point(14248.368164063, 5980.33984375), Point(14201.608398438, 6147.41015625), Point(14261.166015625, 6324.392578125), Point(14224.318359375, 6505.2836914063), Point(14166.634765625, 6681.2856445313), Point(14184.21875, 6869.275390625), Point(14181.162109375, 7082.029296875), Point(14187.176757813, 7247.927734375), Point(14201.108398438, 7440.64453125), Point(14224.551757813, 7637.0126953125), Point(14240.7578125, 7821.5703125), Point(14242.456054688, 7992.107421875), Point(14230.794921875, 8172.8330078125), Point(14177.713867188, 8334.537109375), Point(14182.486328125, 8498.39453125), Point(14106.959960938, 8657.744140625), Point(13927.913085938, 8699.7734375), Point(13756.84765625, 8650.7529296875)),
	Polygon(Point(6954.2646484375, 6160.4560546875), Point(7050.564453125, 6075.6572265625), Point(7168.2265625, 5964.7099609375), Point(7292.5571289063, 5893.3896484375), Point(7424.1870117188, 5825.4252929688), Point(7554.3212890625, 5757.2768554688), Point(7689.4145507813, 5679.8999023438), Point(7828.1049804688, 5618.279296875), Point(7969.4379882813, 5584.1665039063), Point(8077.6469726563, 5592.2021484375), Point(8014.9375, 5667.3642578125), Point(7908.0419921875, 5758.3041992188), Point(7786.9067382813, 5841.5458984375), Point(7653.4165039063, 5922.1708984375), Point(7525.255859375, 6003.876953125), Point(7401.5439453125, 6089.1127929688), Point(7285.9248046875, 6196.2114257813), Point(7183.5185546875, 6310.423828125), Point(7101.6928710938, 6424.3452148438), Point(6978.4243164063, 6454.1401367188), Point(6866.2587890625, 6398.2788085938), Point(6879.0859375, 6269.3818359375)),
	Polygon(Point(13867, 10545), Point(13859.5234375, 10335.53125), Point(13806.737304688, 10168.935546875), Point(13766.374023438, 10022.319335938), Point(13702.915039063, 9886.8994140625), Point(13711.299804688, 9717.67578125), Point(13709.536132813, 9565.1201171875), Point(13714.546875, 9336.763671875), Point(13707.046875, 9130.6884765625), Point(13702.67578125, 8969.21484375), Point(13700.642578125, 8734.974609375), Point(13699.881835938, 8581.99609375), Point(13707.170898438, 8415.4052734375), Point(13722.295898438, 8285.2880859375), Point(13767.987304688, 8149.373046875), Point(13934.40234375, 8128.3413085938), Point(14085.645507813, 8156.6162109375), Point(14178.848632813, 8285.296875), Point(14247.528320313, 8487.646484375), Point(14201.744140625, 8631.9267578125), Point(14241.083007813, 8793.646484375), Point(14188.083984375, 9073.55859375), Point(14204.752929688, 9239.0107421875), Point(14227.864257813, 9462.7109375), Point(14157.38671875, 9730.9970703125), Point(14238.098632813, 9907.03515625), Point(14234.1171875, 10105.54296875), Point(14223.3828125, 10282.137695313), Point(14205.513671875, 10432.33203125), Point(14247.736328125, 10589.258789063), Point(14080.1640625, 10659.465820313), Point(13932.15234375, 10610.715820313)),
	Polygon(Point(9500.720703125, 10275.225585938), Point(9378.6796875, 10195.935546875), Point(9271.09765625, 10095.772460938), Point(9159.7890625, 9987.939453125), Point(9044.76953125, 9889.1552734375), Point(8896.494140625, 9856.31640625), Point(8741.859375, 9819.12109375), Point(8592.5419921875, 9770.490234375), Point(8448.5390625, 9797.37109375), Point(8341.9150390625, 9868.8642578125), Point(8378.0048828125, 9977.212890625), Point(8453.919921875, 10117.12890625), Point(8535.6591796875, 10260.575195313), Point(8605.8779296875, 10404.092773438), Point(8659.3173828125, 10546.606445313), Point(8708.1533203125, 10705.72265625), Point(8720.8642578125, 10852.373046875), Point(8848.56640625, 10908.9296875), Point(9005.896484375, 10911.79296875), Point(9160.0625, 10896.015625), Point(9256.345703125, 10786.163085938), Point(9350.25390625, 10684.587890625), Point(9435.4599609375, 10560.774414063), Point(9548.3369140625, 10476.165039063), Point(9545.1162109375, 10345.169921875)),
	Polygon(Point(1025.2657470703, 3302.1528320313), Point(1023.5099487305, 3371.5908203125), Point(990.08148193359, 3432.4736328125), Point(952.12811279297, 3489.2819824219), Point(902.12335205078, 3536.7868652344), Point(830.82855224609, 3563.849609375), Point(761.78497314453, 3519.470703125), Point(695.13116455078, 3492.787109375), Point(669.75701904297, 3422.8642578125), Point(642.9365234375, 3367.6623535156), Point(670.85894775391, 3316.6823730469), Point(699.63739013672, 3240.4545898438), Point(758.12060546875, 3200.5805664063), Point(805.0947265625, 3173.1923828125), Point(858.15795898438, 3174.1794433594), Point(912.40582275391, 3190.642578125), Point(962.13153076172, 3227.1208496094), Point(1013.4190673828, 3281.5405273438)),
	Polygon(Point(3307.0256347656, 13845.643554688), Point(3520.4184570313, 13833.59765625), Point(3677.8125, 13826.181640625), Point(3827.1506347656, 13879.416992188), Point(4008.4638671875, 13883.1328125), Point(4180.177734375, 13871.159179688), Point(4347.5361328125, 13863.412109375), Point(4501.3979492188, 13863.689453125), Point(4685.568359375, 13868.262695313), Point(4850.783203125, 13880.705078125), Point(5067.8823242188, 13890.432617188), Point(5229.6850585938, 13931.069335938), Point(5441.2954101563, 13933.530273438), Point(5616.470703125, 13923.595703125), Point(5766.1953125, 13913.588867188), Point(5956.5385742188, 13917.1015625), Point(6140.1044921875, 13920.420898438), Point(6333.4194335938, 13933.581054688), Point(6511.0073242188, 13916.995117188), Point(6676.7241210938, 13923.030273438), Point(6846.3310546875, 13922.061523438), Point(7007.3735351563, 13912.862304688), Point(7176.8647460938, 13934.309570313), Point(7340.4951171875, 13915.439453125), Point(7497.3237304688, 13921.333984375), Point(7651.3837890625, 13922.29296875), Point(7850.86328125, 13915.376953125), Point(8010.134765625, 13924.721679688), Point(8162.4638671875, 13968.150390625), Point(8321.35546875, 14063.646484375), Point(8451.107421875, 14202.125976563), Point(8523.294921875, 14339.314453125), Point(8579.794921875, 14490.521484375), Point(8419.208984375, 14489.265625), Point(8266.4990234375, 14483.2734375), Point(8035.109375, 14493.432617188), Point(7842.521484375, 14484.724609375), Point(7633.013671875, 14500.07421875), Point(7454.8359375, 14474.275390625), Point(7242.2924804688, 14465.713867188), Point(7031.5986328125, 14465.713867188), Point(6848.6279296875, 14465.713867188), Point(6640.9248046875, 14491.45703125), Point(6380.9614257813, 14508.708984375), Point(6180.8227539063, 14517.364257813), Point(6008.1889648438, 14526.034179688), Point(5818.0512695313, 14514.556640625), Point(5494.5126953125, 14517.604492188), Point(5315.8579101563, 14468.572265625), Point(5125.9565429688, 14469.479492188), Point(4958.3212890625, 14470.278320313), Point(4780.3891601563, 14462.484375), Point(4535.7587890625, 14455.022460938), Point(4325.935546875, 14490.115234375), Point(4161.6674804688, 14464.895507813), Point(3956.0876464844, 14467.90625), Point(3802.3947753906, 14482.4453125), Point(3640.5478515625, 14475.251953125), Point(3494.2414550781, 14520.422851563), Point(3337.7197265625, 14515.323242188), Point(3180.9916992188, 14487.467773438), Point(3025.9689941406, 14442.802734375), Point(2994.8627929688, 14279.234375), Point(3003.1572265625, 14123.763671875), Point(3046.8081054688, 13968.579101563), Point(3164.3596191406, 13856.322265625)),
	Polygon(Point(2547.3527832031, 8175.06640625), Point(2403.6142578125, 8219.08984375), Point(2259.7727050781, 8259.6201171875), Point(2147.2834472656, 8334.74609375), Point(2100.5280761719, 8459.5107421875), Point(2096.8129882813, 8605.240234375), Point(2102.3559570313, 8748.87109375), Point(2144.2595214844, 8896.78125), Point(2159.9323730469, 9050.275390625), Point(2195.7487792969, 9204.640625), Point(2156.6098632813, 9356.3369140625), Point(2165.5185546875, 9506.84765625), Point(2171.7451171875, 9629.0791015625), Point(2269.5859375, 9591.27734375), Point(2331.1594238281, 9465.1826171875), Point(2367.9963378906, 9316.130859375), Point(2426.0703125, 9175.0283203125), Point(2432.1252441406, 9027.5927734375), Point(2421.8454589844, 8863.609375), Point(2534.4545898438, 8744.990234375), Point(2652.1203613281, 8648.265625), Point(2757.080078125, 8541.9384765625), Point(2860.62890625, 8433.11328125), Point(2938.3933105469, 8311.27734375), Point(2829.5134277344, 8214.3330078125), Point(2709.9597167969, 8137.7416992188)),
	Polygon(Point(673.29888916016, 4068.4404296875), Point(673.79315185547, 4004.0961914063), Point(691.61895751953, 3958.453125), Point(745.74816894531, 3928.5048828125), Point(789.07379150391, 3917.1218261719), Point(852.02362060547, 3934.2705078125), Point(902.25213623047, 3946.7565917969), Point(934.38842773438, 3982.9851074219), Point(929.89868164063, 4035.7565917969), Point(917.02282714844, 4080.5930175781), Point(894.45642089844, 4147.8833007813), Point(863.50659179688, 4189.8837890625), Point(804.38238525391, 4204.1684570313), Point(751.96533203125, 4177.0795898438), Point(705.92999267578, 4152.68359375), Point(676.28356933594, 4108.2021484375)),
	Polygon(Point(4997.5385742188, 2431.2368164063), Point(4997.2495117188, 2299.9255371094), Point(4997.2290039063, 2168.7475585938), Point(4997.3271484375, 2033.3887939453), Point(4997.1650390625, 1901.4302978516), Point(5002.7358398438, 1767.2362060547), Point(5023.7973632813, 1652.2191162109), Point(5118.482421875, 1578.9771728516), Point(5244.5903320313, 1571.3065185547), Point(5375.85546875, 1584.2556152344), Point(5478.3559570313, 1606.9318847656), Point(5518.63671875, 1690.5124511719), Point(5497.5776367188, 1811.0483398438), Point(5487.5083007813, 1941.3751220703), Point(5495.875, 2076.0270996094), Point(5491.4951171875, 2210.1103515625), Point(5520.8828125, 2346.7727050781), Point(5642.4521484375, 2418.7409667969), Point(5758.5747070313, 2486.5825195313), Point(5861.580078125, 2553.2731933594), Point(5816.15234375, 2664.1999511719), Point(5762.3481445313, 2780.9755859375), Point(5685.6870117188, 2885.0046386719), Point(5614.8754882813, 2997.2514648438), Point(5565.4609375, 3109.0954589844), Point(5486.9116210938, 3203.4460449219), Point(5381.033203125, 3250.0021972656), Point(5259.94140625, 3247.8010253906), Point(5130.9155273438, 3227.6857910156), Point(5110.1010742188, 3098.1215820313), Point(5022.1762695313, 3005.0112304688), Point(5004.8803710938, 2883.6833496094), Point(4998.2041015625, 2752.7502441406), Point(4998.3837890625, 2616.7160644531)),
	Polygon(Point(677.20306396484, 10298.111328125), Point(624.7197265625, 10351.33984375), Point(547.4296875, 10356.614257813), Point(482.74456787109, 10320.844726563), Point(423.02758789063, 10272.081054688), Point(439.80249023438, 10203.861328125), Point(482.29238891602, 10145.995117188), Point(524.00213623047, 10082.869140625), Point(594.24664306641, 10084.858398438), Point(666.71966552734, 10103.4296875), Point(719.03094482422, 10158.958984375), Point(724.90698242188, 10226.3203125)),
	Polygon(Point(9891, 8827), Point(9736.6015625, 8820.3193359375), Point(9570.12890625, 8812.9931640625), Point(9571.388671875, 8957.6298828125), Point(9643.2958984375, 9078.9716796875), Point(9740.3984375, 9205.11328125), Point(9854.1181640625, 9313.259765625), Point(9962.732421875, 9427.7138671875), Point(10087.473632813, 9513.6171875), Point(10227.494140625, 9589.5390625), Point(10365.758789063, 9648.15625), Point(10509.592773438, 9579.1357421875), Point(10650.72265625, 9513.0712890625), Point(10791.57421875, 9460.8564453125), Point(10947.256835938, 9412.283203125), Point(11092.596679688, 9366.826171875), Point(11240.63671875, 9315.7255859375), Point(11403.262695313, 9281.2158203125), Point(11451.604492188, 9131.3291015625), Point(11349.108398438, 9006.5205078125), Point(11322.642578125, 8850.9990234375), Point(11362.2578125, 8691.0869140625), Point(11416.299804688, 8539.09765625), Point(11547.392578125, 8450.8056640625), Point(11641.025390625, 8322.2236328125), Point(11689.435546875, 8177.4609375), Point(11648.903320313, 8032.9204101563), Point(11644.763671875, 7875.3481445313), Point(11644.985351563, 7724.1669921875), Point(11614.783203125, 7573.6635742188), Point(11457.65625, 7563.3154296875), Point(11426.254882813, 7719.8291015625), Point(11387.75390625, 7870.0463867188), Point(11343.493164063, 8009.5268554688), Point(11351.2265625, 8165.2075195313), Point(11295.256835938, 8304.865234375), Point(11213.604492188, 8431.3203125), Point(11109.384765625, 8552.044921875), Point(10995.069335938, 8665.8544921875), Point(10875.5390625, 8759.384765625), Point(10731.931640625, 8812.2666015625), Point(10595.141601563, 8913.1943359375), Point(10433.14453125, 8938.638671875), Point(10275.950195313, 8963.515625), Point(10117.81640625, 8937.5146484375), Point(9976.6123046875, 8850.595703125)),
	Polygon(Point(3774.4389648438, 11702.19921875), Point(3689.6804199219, 11830.651367188), Point(3609.7990722656, 11964.500976563), Point(3519.7270507813, 12082.061523438), Point(3423.9025878906, 12207.169921875), Point(3377.5024414063, 12367.948242188), Point(3361.0893554688, 12513.859375), Point(3302.2336425781, 12645.591796875), Point(3214.1843261719, 12732.124023438), Point(3091.4162597656, 12730.999023438), Point(2973.8132324219, 12641.328125), Point(2846.423828125, 12554.0234375), Point(2727.8410644531, 12480.842773438), Point(2669.8952636719, 12359.868164063), Point(2621.2878417969, 12216.22265625), Point(2597.0056152344, 12074.966796875), Point(2647.9079589844, 11944.766601563), Point(2735.5251464844, 11832.071289063), Point(2836.6955566406, 11727.834960938), Point(2969.6743164063, 11662.40234375), Point(3080.2138671875, 11549.599609375), Point(3191.3134765625, 11440.916992188), Point(3325.9338378906, 11378.251953125), Point(3477.4514160156, 11375.693359375), Point(3629.3977050781, 11399.485351563), Point(3726.6940917969, 11515.416015625), Point(3803.0798339844, 11645.96875)),
	Polygon(Point(11165.056640625, 5189.2143554688), Point(11149.266601563, 5042.8862304688), Point(11210.146484375, 4889.017578125), Point(11281.623046875, 4752.6254882813), Point(11385.395507813, 4634.9565429688), Point(11459.184570313, 4499.9892578125), Point(11575.448242188, 4397.1474609375), Point(11663.370117188, 4243.666015625), Point(11842.201171875, 4247.859375), Point(12000.270507813, 4273.1889648438), Point(12143.73046875, 4360.1831054688), Point(12203.342773438, 4507.9208984375), Point(12247.818359375, 4652.529296875), Point(12365.494140625, 4741.908203125), Point(12484.724609375, 4825.7709960938), Point(12629.518554688, 4821.6762695313), Point(12638.116210938, 4672.8193359375), Point(12644.627929688, 4522.2407226563), Point(12643.149414063, 4371.271484375), Point(12644.94921875, 4217.3959960938), Point(12644.975585938, 4066.0148925781), Point(12644.803710938, 3913.8664550781), Point(12642.711914063, 3758.1708984375), Point(12633.236328125, 3610.033203125), Point(12592.127929688, 3466.2053222656), Point(12521.923828125, 3329.7805175781), Point(12452.791992188, 3203.3728027344), Point(12344.016601563, 3066.3642578125), Point(12200.770507813, 3021.6325683594), Point(12050.372070313, 3017.083984375), Point(11917.41015625, 3093.4150390625), Point(11810.791992188, 3199.8903808594), Point(11706.950195313, 3308.6892089844), Point(11660.65234375, 3446.2568359375), Point(11615.118164063, 3581.8173828125), Point(11568.8203125, 3724.5278320313), Point(11530.6484375, 3874.3935546875), Point(11500.704101563, 4024.4167480469), Point(11459.814453125, 4169.3813476563), Point(11401.84765625, 4310.1049804688), Point(11330.754882813, 4453.0209960938), Point(11235.365234375, 4580.2631835938), Point(11131.171875, 4695.9458007813), Point(11042.681640625, 4818.517578125), Point(10984.953125, 4947.1030273438), Point(10957.201171875, 5095.5551757813), Point(10983.3828125, 5239.7158203125), Point(11066.088867188, 5360.7963867188)),
	Polygon(Point(314.61874389648, 7254.6625976563), Point(323.25653076172, 7408.8657226563), Point(331.0578918457, 7590.6030273438), Point(327.00625610352, 7741.0620117188), Point(323.73416137695, 7907.30078125), Point(327.96789550781, 8090.3251953125), Point(342.97738647461, 8292.591796875), Point(346.25872802734, 8462.470703125), Point(333.84204101563, 8644.6591796875), Point(331.33868408203, 8813.0341796875), Point(346.74319458008, 9045.1923828125), Point(346.2487487793, 9190.8828125), Point(337.29925537109, 9322.861328125), Point(335.46405029297, 9483.18359375), Point(331.24227905273, 9680.396484375), Point(344.55899047852, 9846.86328125), Point(343.32760620117, 10007.834960938), Point(333.4342956543, 10170.42578125), Point(324.21166992188, 10321.340820313), Point(239.00610351563, 10425.553710938), Point(62.956787109375, 10424.874023438), Point(-107.20336914063, 10387.461914063), Point(-233.09326171875, 10281.795898438), Point(-221.96557617188, 10106.266601563), Point(-267.82543945313, 9910.67578125), Point(-181.59826660156, 9744.1455078125), Point(-205.54577636719, 9571.197265625), Point(-228.32824707031, 9406.662109375), Point(-232.45227050781, 9230.86328125), Point(-213.74938964844, 8987.0224609375), Point(-191.50988769531, 8789.35546875), Point(-263.19897460938, 8639.4296875), Point(-221.11145019531, 8436.7734375), Point(-287.50622558594, 8284.904296875), Point(-257.99426269531, 8136.38671875), Point(-170.35241699219, 7910.0053710938), Point(-118.45678710938, 7765.7875976563), Point(-80.626708984375, 7619.4951171875), Point(-69.684692382813, 7467.6142578125), Point(-38.70166015625, 7315.7265625), Point(56.258666992188, 7196.9282226563), Point(212.50122070313, 7146.8818359375)),
	Polygon(Point(4498.6420898438, 4557.3500976563), Point(4555.08203125, 4476.9541015625), Point(4617.0805664063, 4455.177734375), Point(4698.6328125, 4474.8754882813), Point(4751.6596679688, 4498.974609375), Point(4772.654296875, 4563.158203125), Point(4775.6865234375, 4634.6323242188), Point(4737.1796875, 4695.0693359375), Point(4691.9091796875, 4756.6030273438), Point(4608.4887695313, 4750.25), Point(4543.9038085938, 4695.5400390625), Point(4485.5517578125, 4645.037109375)),
	Polygon(Point(13979.251953125, 13392.127929688), Point(13990.641601563, 13530.13671875), Point(14038.805664063, 13667.575195313), Point(14067.287109375, 13815.2265625), Point(14121.671875, 13955.254882813), Point(14184.66796875, 14086.630859375), Point(14199.064453125, 14177.927734375), Point(14180.267578125, 14092.822265625), Point(14197.1953125, 13922.326171875), Point(14185.083007813, 13771.146484375), Point(14232.831054688, 13606.013671875), Point(14194.952148438, 13449.236328125), Point(14093.275390625, 13337.236328125)),
	Polygon(Point(3903.8520507813, 3509.6020507813), Point(3901.9309082031, 3392.208984375), Point(3965.369140625, 3267.3764648438), Point(4029.7292480469, 3126.8979492188), Point(4092.5378417969, 2982.43359375), Point(4145.6806640625, 2837.4809570313), Point(4165.4228515625, 2680.6784667969), Point(4202.419921875, 2524.8247070313), Point(4202.880859375, 2367.9714355469), Point(4202.0966796875, 2217.44921875), Point(4200.0463867188, 2065.6633300781), Point(4200.1884765625, 1913.6157226563), Point(4241.71484375, 1767.2032470703), Point(4274.3129882813, 1622.2288818359), Point(4328.7270507813, 1492.7264404297), Point(4450.4790039063, 1418.0601806641), Point(4565.9965820313, 1493.1199951172), Point(4583.85546875, 1631.0092773438), Point(4588.7333984375, 1781.0710449219), Point(4588.8330078125, 1945.8897705078), Point(4583.9951171875, 2099.7036132813), Point(4587.259765625, 2249.6713867188), Point(4577.6772460938, 2406.5041503906), Point(4547.4926757813, 2553.7495117188), Point(4538.6948242188, 2704.8146972656), Point(4519.9892578125, 2864.7893066406), Point(4487.9443359375, 3025.0949707031), Point(4495.7568359375, 3186.734375), Point(4452.4033203125, 3326.4187011719), Point(4359.8696289063, 3454.6884765625), Point(4272.1342773438, 3591.265625), Point(4176.2392578125, 3705.92578125), Point(4039.3198242188, 3656.8022460938)),
	Polygon(Point(10398.580078125, 635.16497802734), Point(10234.249023438, 601.85723876953), Point(10079.752929688, 614.48205566406), Point(9915.4345703125, 613.97729492188), Point(9722.97265625, 601.60247802734), Point(9575.72265625, 592.16168212891), Point(9400.0517578125, 548.826171875), Point(9202.9296875, 529.61926269531), Point(9011.865234375, 520.11706542969), Point(8789.5703125, 549.17700195313), Point(8627.833984375, 555.05895996094), Point(8444.7333984375, 563.54913330078), Point(8283.1005859375, 564.24926757813), Point(8113.7583007813, 561.78564453125), Point(7968.130859375, 559.96545410156), Point(7805.2490234375, 561.12329101563), Point(7645.6459960938, 553.88958740234), Point(7490.19140625, 507.81561279297), Point(7290.1279296875, 503.41915893555), Point(7106.6674804688, 503.44769287109), Point(6963.01171875, 557.06066894531), Point(6873.4599609375, 537.97790527344), Point(6757.0576171875, 431.22924804688), Point(6792.9013671875, 234.00219726563), Point(6835.634765625, 86.930786132813), Point(7003.0952148438, -24.643920898438), Point(7158.8608398438, -16.828491210938), Point(7300.4365234375, -70.5087890625), Point(7455.0952148438, -23.0712890625), Point(7659.740234375, 12.006408691406), Point(7827.0112304688, -24.787841796875), Point(7979.1977539063, -31.441223144531), Point(8142.5874023438, -24.747375488281), Point(8341.1630859375, -14.810852050781), Point(8496.2080078125, -4.8492431640625), Point(8673.83203125, -1.5565185546875), Point(8873.904296875, 1.7338256835938), Point(9016.314453125, -74.7001953125), Point(9166.5537109375, -50.926635742188), Point(9351.1806640625, -6.1041259765625), Point(9490.599609375, -74.547119140625), Point(9719.740234375, 4.7347412109375), Point(9866.16015625, -47.081909179688), Point(10016.251953125, -0.166015625), Point(10160.837890625, -56.386108398438), Point(10286.66015625, 29.664916992188), Point(10435.668945313, 165.80310058594), Point(10541.30859375, 282.05310058594), Point(10606.77734375, 431.33337402344), Point(10624.048828125, 594.09777832031), Point(10483.516601563, 653.85217285156)),
	Polygon(Point(13992.661132813, 13592.791992188), Point(13978.370117188, 13440.340820313), Point(13952.603515625, 13281.680664063), Point(13918.107421875, 13144.630859375), Point(13918.822265625, 12986.697265625), Point(13895.02734375, 12824.81640625), Point(13909.743164063, 12670.264648438), Point(13897.002929688, 12516.684570313), Point(13902.97265625, 12380.642578125), Point(13917.96875, 12250.182617188), Point(14019.499023438, 12151.706054688), Point(14190.384765625, 12172.17578125), Point(14251.896484375, 12314.717773438), Point(14205.681640625, 12482.659179688), Point(14236.2734375, 12634.310546875), Point(14189.258789063, 12792.853515625), Point(14203.625, 12943.2734375), Point(14197.041015625, 13121.125), Point(14189.842773438, 13287.013671875), Point(14191.942382813, 13457.985351563), Point(14204.771484375, 13611.078125)),
	Polygon(Point(9508.9111328125, 9839.943359375), Point(9490.814453125, 9918.5791015625), Point(9451.0234375, 9989.337890625), Point(9382.294921875, 10017.426757813), Point(9314.4814453125, 10014.682617188), Point(9249.74609375, 9995.533203125), Point(9214.6337890625, 9915.9951171875), Point(9221.69140625, 9843.923828125), Point(9239.2490234375, 9810.95703125), Point(9293.7265625, 9786.5341796875), Point(9373.6591796875, 9743.7373046875), Point(9431.3623046875, 9771.2490234375)),
	Polygon(Point(10801.903320313, 11142.155273438), Point(10725.392578125, 11146.3828125), Point(10667.622070313, 11110.755859375), Point(10623.750976563, 11039.82421875), Point(10606.048828125, 10956.247070313), Point(10646.685546875, 10900.62109375), Point(10713.125, 10876.927734375), Point(10801.756835938, 10881.961914063), Point(10861.270507813, 10900.737304688), Point(10873.759765625, 10971.6796875), Point(10874.844726563, 11047.017578125), Point(10828.963867188, 11113.411132813)),
	Polygon(Point(13761.475585938, 5962.2788085938), Point(13748.444335938, 5754.0083007813), Point(13710.520507813, 5584.3979492188), Point(13705.484375, 5434.1123046875), Point(13708.975585938, 5270.1240234375), Point(13695.991210938, 5096.71484375), Point(13701.41015625, 4937.2978515625), Point(13701.984375, 4769.9653320313), Point(13711.853515625, 4609.3862304688), Point(13727.166015625, 4439.5073242188), Point(13703.258789063, 4278.4272460938), Point(13722.861328125, 4094.1020507813), Point(13684.201171875, 3935.0595703125), Point(13666.8046875, 3760.7038574219), Point(13624.724609375, 3580.3713378906), Point(13578.330078125, 3426.6179199219), Point(13552.352539063, 3274.0266113281), Point(13496.770507813, 3123.3308105469), Point(13451.977539063, 2980.9912109375), Point(13391.084960938, 2831.5395507813), Point(13319.875, 2688.4780273438), Point(13278.096679688, 2535.4174804688), Point(13219.909179688, 2428.8603515625), Point(13290.279296875, 2341.9743652344), Point(13474.625, 2335.4501953125), Point(13666.795898438, 2364.9375), Point(13850.694335938, 2394.771484375), Point(14086.384765625, 2438.4831542969), Point(14238.13671875, 2503.71875), Point(14182.342773438, 2710.12109375), Point(14177.34765625, 2878.4604492188), Point(14185.706054688, 3099.9565429688), Point(14259.709960938, 3235.7758789063), Point(14204.43359375, 3420.3310546875), Point(14245.911132813, 3587.7927246094), Point(14164.633789063, 3785.2998046875), Point(14186.979492188, 3960.79296875), Point(14186.385742188, 4168.2236328125), Point(14177.639648438, 4437.48046875), Point(14169.21875, 4737.119140625), Point(14242.971679688, 4949.9384765625), Point(14185.950195313, 5150.767578125), Point(14222.38671875, 5336.1420898438), Point(14234.409179688, 5561.5112304688), Point(14199.934570313, 5715.22265625), Point(14170.985351563, 5892.9541015625), Point(14217.56640625, 6037.0341796875), Point(14177.875, 6211.8061523438), Point(14036.556640625, 6293.4873046875), Point(13889.323242188, 6251.7094726563), Point(13781.995117188, 6111.9013671875)),
	Polygon(Point(7348.9770507813, 12132.534179688), Point(7491.6416015625, 12130.598632813), Point(7636.7216796875, 12159.561523438), Point(7785.9990234375, 12200.044921875), Point(7930.3818359375, 12250.969726563), Point(8082.1533203125, 12308.087890625), Point(8177.9155273438, 12420.05078125), Point(8190.9091796875, 12572.10546875), Point(8094.0463867188, 12696.259765625), Point(8026.7319335938, 12835.431640625), Point(7936.6469726563, 12926.45703125), Point(7805.0571289063, 12954.133789063), Point(7650.8002929688, 12960.791992188), Point(7493.3115234375, 12962.919921875), Point(7337.705078125, 12962.94921875), Point(7183.4560546875, 12962.981445313), Point(7027.7631835938, 12962.977539063), Point(6870.0966796875, 12962.982421875), Point(6712.0673828125, 12962.967773438), Point(6571.8876953125, 12936.798828125), Point(6506.140625, 12819.24609375), Point(6516.2412109375, 12691.948242188), Point(6643.2192382813, 12641.326171875), Point(6792.48828125, 12607.844726563), Point(6935.001953125, 12543.70703125), Point(7042.4731445313, 12424.518554688), Point(7151.6708984375, 12310.614257813), Point(7233.734375, 12182.2109375)),
	Polygon(Point(11824.166015625, 10756.592773438), Point(11822.489257813, 10618.647460938), Point(11912.455078125, 10517.408203125), Point(12060.704101563, 10529.989257813), Point(12158.119140625, 10604.498046875), Point(12133.504882813, 10713.5859375), Point(12027.645507813, 10812.149414063), Point(11902.912109375, 10902.85546875)),
	Polygon(Point(7623.9765625, 2178.4128417969), Point(7715.9467773438, 2272.0766601563), Point(7759.8349609375, 2410.3112792969), Point(7799.1860351563, 2564.3840332031), Point(7912.4418945313, 2694.3217773438), Point(8081.0473632813, 2686.9289550781), Point(8221.3369140625, 2592.8037109375), Point(8250.5537109375, 2439.9045410156), Point(8351.525390625, 2380.8061523438), Point(8474.4287109375, 2403.8850097656), Point(8602.1572265625, 2469.7475585938), Point(8737.998046875, 2533.6164550781), Point(8890.734375, 2585.7036132813), Point(9049.572265625, 2572.05859375), Point(9202.791015625, 2577.7504882813), Point(9355.9111328125, 2565.4907226563), Point(9501.2900390625, 2515.7053222656), Point(9641.912109375, 2455.7883300781), Point(9758.2490234375, 2402.4067382813), Point(9843.265625, 2472.1809082031), Point(9828.4462890625, 2591.93359375), Point(9721.83203125, 2668.830078125), Point(9588.5751953125, 2725.9987792969), Point(9448.89453125, 2768.3852539063), Point(9305.0390625, 2817.9367675781), Point(9161.033203125, 2862.2268066406), Point(9011.3662109375, 2887.7194824219), Point(8873.966796875, 2970.4104003906), Point(8758.9599609375, 3074.8217773438), Point(8659.4716796875, 3181.7641601563), Point(8542.6630859375, 3174.7360839844), Point(8424.0126953125, 3134.6479492188), Point(8293.603515625, 3062.4621582031), Point(8154.41796875, 2994.1625976563), Point(8000.5551757813, 3005.8217773438), Point(7866.2329101563, 2932.7749023438), Point(7715.6899414063, 2894.5166015625), Point(7559.251953125, 2896.6696777344), Point(7418.0146484375, 2964.0969238281), Point(7282.8828125, 2986.5190429688), Point(7223.4711914063, 2888.4519042969), Point(7203.5703125, 2755.8625488281), Point(7206.146484375, 2606.0505371094), Point(7215.55078125, 2460.6691894531), Point(7298.8876953125, 2340.3474121094), Point(7393.7392578125, 2224.4819335938), Point(7506.6469726563, 2136.4721679688)),
	Polygon(Point(4296.1997070313, 11777.409179688), Point(4439.9755859375, 11731.392578125), Point(4590.0073242188, 11680.987304688), Point(4738.8271484375, 11637.060546875), Point(4882.23046875, 11588.385742188), Point(5025.6538085938, 11535.274414063), Point(5165.82421875, 11469.543945313), Point(5283.5341796875, 11348.415039063), Point(5396.3818359375, 11261.147460938), Point(5525.3510742188, 11289.331054688), Point(5671.328125, 11349.953125), Point(5801.154296875, 11434.697265625), Point(5962.2021484375, 11413.012695313), Point(6108.67578125, 11473.361328125), Point(6254.77734375, 11538.3984375), Point(6421.1333007813, 11527.30078125), Point(6575.267578125, 11513.168945313), Point(6694.9936523438, 11420.184570313), Point(6826.84765625, 11474.483398438), Point(6828.5463867188, 11618.534179688), Point(6836.9057617188, 11766.909179688), Point(6844.9873046875, 11910.877929688), Point(6825.6557617188, 12060.836914063), Point(6721.4291992188, 12173.022460938), Point(6607.2026367188, 12261.861328125), Point(6464.1220703125, 12300.149414063), Point(6328.9326171875, 12239.514648438), Point(6271.228515625, 12111.618164063), Point(6218.4677734375, 11977.694335938), Point(6214.5219726563, 11811.827148438), Point(6058.71484375, 11742.688476563), Point(5892.583984375, 11752.588867188), Point(5826.5385742188, 11894.719726563), Point(5772.1982421875, 12035.20703125), Point(5666.08984375, 12102.291015625), Point(5542.099609375, 12017.1875), Point(5397.6982421875, 11979.541015625), Point(5291.171875, 11935.202148438), Point(5152.8920898438, 11872.745117188), Point(4985.01953125, 11842.563476563), Point(4825.1508789063, 11861.065429688), Point(4666.7646484375, 11859.969726563), Point(4508.6118164063, 11909.596679688), Point(4361.9702148438, 11957.3203125), Point(4206.4057617188, 12008.694335938), Point(4147.9438476563, 11869.896484375)),
	Polygon(Point(9782.103515625, 12759.544921875), Point(9757.654296875, 12892.431640625), Point(9667.8447265625, 12961.163085938), Point(9579.91796875, 13004.615234375), Point(9491.296875, 12965.7421875), Point(9434.34765625, 12847.607421875), Point(9404.74609375, 12702.454101563), Point(9454.6328125, 12537.154296875), Point(9465.958984375, 12363.029296875), Point(9476.869140625, 12214.42578125), Point(9459.67578125, 12089.435546875), Point(9450.8759765625, 11950.155273438), Point(9499.599609375, 11804.79296875), Point(9504.912109375, 11652.3828125), Point(9524.841796875, 11502.353515625), Point(9553.9384765625, 11350.290039063), Point(9546.740234375, 11194.493164063), Point(9625.2109375, 11065.32421875), Point(9711.7177734375, 10939.1171875), Point(9820.8349609375, 10842.118164063), Point(9938.25390625, 10861.9296875), Point(10026.86328125, 10924.224609375), Point(10044.739257813, 11046.453125), Point(10039.970703125, 11194.913085938), Point(10026.595703125, 11345.633789063), Point(9988.515625, 11492.895507813), Point(9993.5419921875, 11649.098632813), Point(9988.01171875, 11799.467773438), Point(9948.8046875, 11945.571289063), Point(9942.689453125, 12096.602539063), Point(9944.2138671875, 12250.458007813), Point(9944.7802734375, 12404.564453125), Point(9928.810546875, 12552.78515625), Point(9832.154296875, 12664.935546875)),
	Polygon(Point(2858.0087890625, 1089.4725341797), Point(2834.2954101563, 1041.3582763672), Point(2869.0063476563, 975.76751708984), Point(2874.3635253906, 905.77667236328), Point(2942.87109375, 882.12969970703), Point(3006.9792480469, 847.1162109375), Point(3071.4860839844, 844.08367919922), Point(3132.1228027344, 890.28967285156), Point(3199.59375, 931.60809326172), Point(3231.4543457031, 1001.6130371094), Point(3228.1787109375, 1084.0656738281), Point(3199.3244628906, 1140.8170166016), Point(3160.3317871094, 1180.828125), Point(3089.1923828125, 1207.2889404297), Point(3025.1826171875, 1233.9201660156), Point(2965.6267089844, 1201.9718017578), Point(2917.3371582031, 1145.4916992188)),
	Polygon(Point(8042.8549804688, 1853.2554931641), Point(8184.4912109375, 1893.7570800781), Point(8333.8759765625, 1922.662109375), Point(8471.447265625, 1954.6925048828), Point(8565.9189453125, 1888.3128662109), Point(8634.5703125, 1770.3459472656), Point(8700.4755859375, 1627.1474609375), Point(8735.7392578125, 1515.5042724609), Point(8638.638671875, 1480.0736083984), Point(8498.1904296875, 1469.2171630859), Point(8347.9228515625, 1465.2037353516), Point(8192.5361328125, 1465.0384521484), Point(8037.703125, 1469.6146240234), Point(7889.4692382813, 1490.0504150391), Point(7820.0581054688, 1589.0411376953), Point(7799.017578125, 1715.2358398438), Point(7874.4252929688, 1845.7341308594)),
	Polygon(Point(6075.9975585938, 12613.47265625), Point(6212.5078125, 12656.390625), Point(6232.796875, 12794.391601563), Point(6207.220703125, 12931.106445313), Point(6066.2368164063, 12945.327148438), Point(5916.0063476563, 12950.795898438), Point(5765.61328125, 12961.897460938), Point(5615.041015625, 12962.0625), Point(5465.1767578125, 12959.547851563), Point(5332.6982421875, 12945.971679688), Point(5373.3642578125, 12825.463867188), Point(5446.3330078125, 12698.8828125), Point(5538.578125, 12575.499023438), Point(5655.7563476563, 12490.001953125), Point(5797.921875, 12535.12109375), Point(5954.4384765625, 12567.6875)),
	Polygon(Point(1294.9935302734, 355.18771362305), Point(1143.8643798828, 346.9548034668), Point(996.60021972656, 296.2458190918), Point(840.64678955078, 286.58959960938), Point(692.46472167969, 213.97636413574), Point(547.30261230469, 123.03517913818), Point(376.65014648438, 61.822589874268), Point(241.27333068848, 108.21788787842), Point(144.27183532715, 48.244903564453), Point(61.584129333496, 34.86003112793), Point(146.99328613281, -7.11376953125), Point(337.09936523438, 19.803833007813), Point(480.06701660156, -37.697021484375), Point(630.52880859375, -42.026733398438), Point(789.99029541016, -16.666137695313), Point(944.18072509766, -17.907470703125), Point(1094.3923339844, 9.3558349609375), Point(1244.1650390625, 30.614624023438), Point(1395.4598388672, 19.6904296875), Point(1428.5269775391, 166.07189941406), Point(1357.7983398438, 303.20727539063)),
	Polygon(Point(5962.4858398438, 3289.6994628906), Point(6049.1630859375, 3160.1533203125), Point(6111.974609375, 3025.8276367188), Point(6254.7236328125, 2992.1850585938), Point(6395.4790039063, 2940.2133789063), Point(6542.2109375, 2933.181640625), Point(6675.2192382813, 2967.7485351563), Point(6769.1694335938, 3054.2678222656), Point(6787.2919921875, 3192.6333007813), Point(6722.7265625, 3327.7663574219), Point(6612.6279296875, 3428.6669921875), Point(6464.853515625, 3473.666015625), Point(6311.8862304688, 3542.2114257813), Point(6217.8276367188, 3696.7639160156), Point(6233.7275390625, 3866.5942382813), Point(6236.12109375, 4019.0480957031), Point(6231.9614257813, 4169.177734375), Point(6175.7397460938, 4297.439453125), Point(6039.6704101563, 4258.6020507813), Point(5920.6489257813, 4176.9409179688), Point(5854.1293945313, 4037.1433105469), Point(5785.404296875, 3908.1801757813), Point(5747.5971679688, 3775.5812988281), Point(5738.2241210938, 3633.5339355469), Point(5811.1357421875, 3504.6552734375), Point(5895.0029296875, 3383.2907714844)),
	Polygon(Point(1047.4434814453, 6334.8422851563), Point(1132.0997314453, 6334.9033203125), Point(1198.9371337891, 6376.9731445313), Point(1212.5910644531, 6445.4868164063), Point(1232.7445068359, 6507.7143554688), Point(1212.2125244141, 6575.271484375), Point(1169.0089111328, 6622.0346679688), Point(1109.7521972656, 6621.1020507813), Point(1041.4748535156, 6578.1767578125), Point(993.72729492188, 6559.4018554688), Point(966.61907958984, 6510.0439453125), Point(968.49517822266, 6431.8896484375), Point(994.88299560547, 6378.7802734375)),
	Polygon(Point(4416.7646484375, 7008.5209960938), Point(4469.3466796875, 6972.6997070313), Point(4551.9692382813, 6789.6303710938), Point(4508.0756835938, 6622.1440429688), Point(4501.3271484375, 6466.3481445313), Point(4513.8720703125, 6298.3520507813), Point(4472.40234375, 6137.2299804688), Point(4438.44140625, 6001.8911132813), Point(4540.7802734375, 5935.3666992188), Point(4679.26953125, 5917.494140625), Point(4824.3051757813, 5930.1420898438), Point(4950.3969726563, 6018.328125), Point(5063.7143554688, 6140.9208984375), Point(5171.9213867188, 6257.7231445313), Point(5302.0092773438, 6351.4555664063), Point(5416.3403320313, 6446.337890625), Point(5473.966796875, 6585.1743164063), Point(5482.1958007813, 6722.0947265625), Point(5425.5854492188, 6854.0322265625), Point(5350.7197265625, 6984.3212890625), Point(5269.5166015625, 7100.3735351563), Point(5156.3681640625, 7185.2900390625), Point(5031.1005859375, 7255.8627929688), Point(4892.1000976563, 7303.6650390625), Point(4742.080078125, 7302.4765625), Point(4598.8325195313, 7294.7543945313), Point(4504.673828125, 7179.0864257813), Point(4411.96484375, 7056.126953125)),
	Polygon(Point(13278.510742188, 10573.274414063), Point(13316.2109375, 10539.5703125), Point(13327.354492188, 10491.569335938), Point(13312.228515625, 10416.280273438), Point(13275.005859375, 10353.383789063), Point(13192.470703125, 10328.315429688), Point(13126.401367188, 10370.6640625), Point(13077.766601563, 10412.712890625), Point(13064.454101563, 10485.438476563), Point(13103.526367188, 10543.9453125), Point(13152.16015625, 10593.682617188), Point(13219.626953125, 10599.267578125)),
	Polygon(Point(5646.3334960938, 9261.4921875), Point(5504.1630859375, 9252.064453125), Point(5352.380859375, 9271.1044921875), Point(5201.2270507813, 9318.392578125), Point(5052.2421875, 9333.642578125), Point(4910.6982421875, 9389.080078125), Point(4770.1684570313, 9455.0869140625), Point(4628.8022460938, 9517.296875), Point(4510.6469726563, 9602.220703125), Point(4501.8745117188, 9697.41796875), Point(4529.5219726563, 9771.7470703125), Point(4671.4936523438, 9667.8427734375), Point(4834.1235351563, 9779.6298828125), Point(4920.6650390625, 9914.09765625), Point(5008.8564453125, 10043.662109375), Point(5075.1298828125, 10188.432617188), Point(5102.5791015625, 10347.263671875), Point(5034.2504882813, 10499.879882813), Point(4912.9560546875, 10605.393554688), Point(4786.6279296875, 10709.768554688), Point(4622.6083984375, 10721.216796875), Point(4473.4702148438, 10699.149414063), Point(4327.2934570313, 10657.75390625), Point(4223.029296875, 10544.892578125), Point(4111.783203125, 10437.069335938), Point(4006.2351074219, 10307.6640625), Point(4032.548828125, 10136.865234375), Point(4142.0356445313, 10016.818359375), Point(4004.4130859375, 9978.8251953125), Point(3886.4150390625, 10017.864257813), Point(3773.6936035156, 10108.625976563), Point(3664.9013671875, 10206.654296875), Point(3558.4501953125, 10305.288085938), Point(3494.0590820313, 10448.724609375), Point(3434.9243164063, 10579.763671875), Point(3401.8642578125, 10699.947265625), Point(3445.6042480469, 10824.376953125), Point(3503.8820800781, 10951.579101563), Point(3630.9536132813, 11000.490234375), Point(3783.265625, 10992.953125), Point(3938.7941894531, 11032.333984375), Point(4044.6240234375, 11150.783203125), Point(4120.3544921875, 11274.774414063), Point(4241.5590820313, 11349.543945313), Point(4388.462890625, 11299.70703125), Point(4539.7377929688, 11248.245117188), Point(4683.7392578125, 11189.604492188), Point(4822.5341796875, 11136.276367188), Point(4942.7651367188, 11056.577148438), Point(5054.4013671875, 10949.162109375), Point(5162.8081054688, 10845.3359375), Point(5264.603515625, 10729.668945313), Point(5331.3002929688, 10588.700195313), Point(5377.0009765625, 10441.23046875), Point(5395.2319335938, 10288.728515625), Point(5396.9296875, 10132.29296875), Point(5374.5405273438, 9981.6650390625), Point(5367.1684570313, 9824.6201171875), Point(5485.8544921875, 9717.77734375), Point(5601.0439453125, 9611.0439453125), Point(5701.5952148438, 9500.15234375), Point(5747.3408203125, 9354.94140625)),
	Polygon(Point(1863.2733154297, 1505.4571533203), Point(1911.3121337891, 1560.4909667969), Point(1898.6545410156, 1627.4920654297), Point(1856.5, 1688.1243896484), Point(1812.5885009766, 1726.9814453125), Point(1747.1229248047, 1730.1875), Point(1687.8880615234, 1686.1593017578), Point(1650.7579345703, 1627.7987060547), Point(1640.0997314453, 1572.8884277344), Point(1667.5628662109, 1516.0943603516), Point(1723.0245361328, 1469.7935791016), Point(1776.9866943359, 1441.0355224609), Point(1831.5516357422, 1482.6254882813)),
	Polygon(Point(10700.471679688, 10267.650390625), Point(10584.602539063, 10174.251953125), Point(10588.073242188, 10068.939453125), Point(10687.3984375, 10010.782226563), Point(10833.846679688, 9955.9677734375), Point(10967.266601563, 9885.8125), Point(11107.899414063, 9835.697265625), Point(11254.3046875, 9807.7861328125), Point(11408.088867188, 9778.30078125), Point(11567.661132813, 9741.265625), Point(11715.7734375, 9702.291015625), Point(11869.432617188, 9679.107421875), Point(12013.420898438, 9628.11328125), Point(12168.005859375, 9618.5654296875), Point(12331.321289063, 9613.32421875), Point(12488.747070313, 9618.435546875), Point(12648.043945313, 9623.39453125), Point(12776.534179688, 9677.57421875), Point(12792.911132813, 9803.208984375), Point(12782.709960938, 9952.087890625), Point(12635.955078125, 9992.8974609375), Point(12498.8984375, 10057.4140625), Point(12344.521484375, 10046.048828125), Point(12195.760742188, 10097.927734375), Point(12041.470703125, 10100.766601563), Point(11889.087890625, 10114.607421875), Point(11734.66796875, 10147.243164063), Point(11578.13671875, 10171.0546875), Point(11420.796875, 10197.634765625), Point(11264.055664063, 10240.05859375), Point(11109.663085938, 10262.669921875), Point(10961.059570313, 10315.762695313), Point(10838.798828125, 10352.624023438)),
	Polygon(Point(811.72729492188, 12376.3984375), Point(876.78845214844, 12523.271484375), Point(966.42553710938, 12651.92578125), Point(1053.4322509766, 12775.975585938), Point(1150.8470458984, 12921.092773438), Point(1314.4770507813, 13024.987304688), Point(1456.5916748047, 13109.189453125), Point(1595.4272460938, 13208.548828125), Point(1728.5594482422, 13299.5078125), Point(1877.4722900391, 13394.311523438), Point(2020.8739013672, 13445.087890625), Point(2196.2819824219, 13504.619140625), Point(2340.1696777344, 13561.885742188), Point(2513.2983398438, 13619.487304688), Point(2658.9267578125, 13667.75), Point(2858.4301757813, 13737.731445313), Point(3014.3786621094, 13788.868164063), Point(3174.9858398438, 13787.96484375), Point(3345.271484375, 13839.3671875), Point(3502.2846679688, 13843.313476563), Point(3600.4008789063, 13976.221679688), Point(3631.7565917969, 14129.513671875), Point(3643.0522460938, 14296.895507813), Point(3568.1083984375, 14454.6953125), Point(3405.6284179688, 14500.751953125), Point(3252.3188476563, 14459.965820313), Point(3061.9230957031, 14477.986328125), Point(2904.5231933594, 14482.48828125), Point(2741.4125976563, 14483.123046875), Point(2590.0717773438, 14482.48828125), Point(2399.662109375, 14515.0703125), Point(2242.626953125, 14480.439453125), Point(2071.3747558594, 14504.642578125), Point(1814.6594238281, 14513.193359375), Point(1629.6444091797, 14469.951171875), Point(1411.2720947266, 14418.646484375), Point(1172.3041992188, 14366.106445313), Point(961.08618164063, 14292.759765625), Point(829.05346679688, 14212.9296875), Point(676.51519775391, 14134.98828125), Point(548.7919921875, 14019.946289063), Point(415.47705078125, 13856.819335938), Point(273.65454101563, 13749.125), Point(133.13513183594, 13657.717773438), Point(1.4295654296875, 13541.4140625), Point(-85.5595703125, 13409.04296875), Point(-145.24011230469, 13243.391601563), Point(-184.83679199219, 13096.071289063), Point(-206.05871582031, 12943.958984375), Point(-202.11987304688, 12759.806640625), Point(-180.17004394531, 12585.219726563), Point(-142.42504882813, 12423.983398438), Point(-76.435791015625, 12274.71875), Point(51.5810546875, 12168.263671875), Point(186.68322753906, 12091.80078125), Point(348.17065429688, 12060.912109375), Point(500.33935546875, 12074.265625), Point(650.67956542969, 12132.44140625), Point(743.97808837891, 12255.108398438)),
	Polygon(Point(9127.6240234375, 1753.1450195313), Point(9170.9755859375, 1608.3686523438), Point(9265.8837890625, 1538.8082275391), Point(9386.009765625, 1518.7778320313), Point(9540.5927734375, 1525.1008300781), Point(9695.654296875, 1526.1968994141), Point(9847.6630859375, 1528.5988769531), Point(10001.322265625, 1526.5524902344), Point(10140.454101563, 1570.6058349609), Point(10250.30078125, 1654.4898681641), Point(10275.193359375, 1789.8475341797), Point(10225.532226563, 1912.8520507813), Point(10126.345703125, 1989.2421875), Point(9981.0927734375, 2012.8695068359), Point(9824.1728515625, 1999.4124755859), Point(9670.826171875, 2030.4008789063), Point(9532.9287109375, 2111.0581054688), Point(9397.36328125, 2177.9812011719), Point(9250.52734375, 2191.4143066406), Point(9101.4775390625, 2167.2561035156), Point(9015.3046875, 2104.576171875), Point(9008.5439453125, 2012.1087646484), Point(9062.6171875, 1889.7344970703)),
	Polygon(Point(297.26431274414, 4630.6303710938), Point(331.87698364258, 4799.8247070313), Point(344.41055297852, 4974.19921875), Point(346.83541870117, 5145.3686523438), Point(338.73168945313, 5303.166015625), Point(345.75955200195, 5486.833984375), Point(342.01992797852, 5665.7319335938), Point(346.99597167969, 5836.5825195313), Point(338.52783203125, 5998.060546875), Point(340.11380004883, 6154.3134765625), Point(338.12188720703, 6397.9624023438), Point(337.55084228516, 6613.8715820313), Point(345.94702148438, 6835.775390625), Point(345.10488891602, 6998.078125), Point(341.1015625, 7190.923828125), Point(346.29656982422, 7340.2514648438), Point(335.953125, 7499.1796875), Point(238.40063476563, 7620.7607421875), Point(43.30419921875, 7710.6083984375), Point(-113.20678710938, 7720.2104492188), Point(-267.51025390625, 7650.765625), Point(-276.46411132813, 7489.1049804688), Point(-248.88928222656, 7323.9189453125), Point(-262.30334472656, 7174.1474609375), Point(-247.08972167969, 6964.1708984375), Point(-217.87365722656, 6784.5737304688), Point(-181.54870605469, 6574.630859375), Point(-253.29479980469, 6399.8193359375), Point(-225.302734375, 6228.4624023438), Point(-283.20959472656, 6012.220703125), Point(-234.49768066406, 5820.7270507813), Point(-199.28039550781, 5655.275390625), Point(-164.33264160156, 5508.1630859375), Point(-136.490234375, 5343.3056640625), Point(-134.42333984375, 5188.2299804688), Point(-132.89404296875, 5029.6875), Point(-77.905151367188, 4865.7978515625), Point(-2.0174560546875, 4719.8481445313), Point(99.348449707031, 4602.8940429688)),
	Polygon(Point(3573.4792480469, 4902.6083984375), Point(3708.599609375, 4880.4599609375), Point(3836.5419921875, 4921.2529296875), Point(3951.349609375, 5020.7299804688), Point(4055.7512207031, 5133.6967773438), Point(4164.3090820313, 5242.9526367188), Point(4274.88671875, 5349.7583007813), Point(4375.16015625, 5464.7333984375), Point(4433.3774414063, 5568.2099609375), Point(4312.4252929688, 5600.6420898438), Point(4166.576171875, 5646.9438476563), Point(4028.2067871094, 5695.11328125), Point(3904.875, 5612.1396484375), Point(3758.251953125, 5541.4638671875), Point(3595.2141113281, 5550.734375), Point(3433.1442871094, 5549.1806640625), Point(3293.6770019531, 5630.9624023438), Point(3139.6105957031, 5656.6235351563), Point(3005.0495605469, 5738.5747070313), Point(2896.251953125, 5863.7314453125), Point(2822.2839355469, 6013.6577148438), Point(2743.1926269531, 6142.47265625), Point(2617.4289550781, 6238.5639648438), Point(2553.7729492188, 6424.0151367188), Point(2625.2663574219, 6605.951171875), Point(2628.0361328125, 6763.380859375), Point(2565.3425292969, 6862.2299804688), Point(2486.2624511719, 6793.771484375), Point(2452.4025878906, 6658.6137695313), Point(2420.2395019531, 6510.654296875), Point(2404.0053710938, 6357.6596679688), Point(2374.1711425781, 6216.9575195313), Point(2435.1501464844, 6090.599609375), Point(2550.3173828125, 5993.7846679688), Point(2655.1748046875, 5874.0966796875), Point(2738.4426269531, 5724.9189453125), Point(2721.5217285156, 5558.78125), Point(2682.1328125, 5404.4155273438), Point(2617.8957519531, 5279.3657226563), Point(2639.826171875, 5194.7944335938), Point(2742.04296875, 5178.228515625), Point(2887.7236328125, 5140.2099609375), Point(3029.779296875, 5093.685546875), Point(3173.8122558594, 5041.7431640625), Point(3317.1643066406, 4988.1186523438), Point(3455.3159179688, 4929.3125)),
	Polygon(Point(9875.0087890625, 6883.0971679688), Point(9933.3505859375, 6741.6411132813), Point(9982.158203125, 6601.4580078125), Point(10043.427734375, 6467.583984375), Point(10047.18359375, 6309.361328125), Point(9963.05859375, 6177.2353515625), Point(9855.4765625, 6071.7670898438), Point(9745.1171875, 5965.083984375), Point(9633.2822265625, 5882.2075195313), Point(9656.48046875, 5815.2109375), Point(9743.16015625, 5772.4516601563), Point(9889.30859375, 5721.8720703125), Point(10025.711914063, 5649.1293945313), Point(10153.013671875, 5560.30078125), Point(10287.557617188, 5486.3251953125), Point(10392.052734375, 5374.3017578125), Point(10507.9140625, 5315.509765625), Point(10599.087890625, 5391.9057617188), Point(10662.84375, 5518.8115234375), Point(10736.990234375, 5645.9794921875), Point(10781.705078125, 5784.263671875), Point(10656.950195313, 5886.662109375), Point(10629.703125, 6048.0478515625), Point(10644.192382813, 6199.626953125), Point(10643.98828125, 6353.0278320313), Point(10618.60546875, 6498.1489257813), Point(10546.784179688, 6605.9560546875), Point(10418.30078125, 6651.1625976563), Point(10286.463867188, 6740.1635742188), Point(10314.098632813, 6915.8286132813), Point(10476.309570313, 6980.4116210938), Point(10634.0390625, 6965.3623046875), Point(10786.520507813, 6964.9887695313), Point(10937.5390625, 6965.1806640625), Point(11089.469726563, 6966.5825195313), Point(11224.686523438, 7001.6245117188), Point(11272.42578125, 7119.6352539063), Point(11212.270507813, 7229.1372070313), Point(11075.747070313, 7245.5834960938), Point(10925.487304688, 7250.9697265625), Point(10773.467773438, 7253.9887695313), Point(10620.45703125, 7256.3115234375), Point(10464.5, 7258.2934570313), Point(10314.921875, 7252.5537109375), Point(10168.1328125, 7223.9575195313), Point(10026.327148438, 7176.419921875), Point(9901.5439453125, 7103.9892578125), Point(9848.1748046875, 6989.9912109375)),
	Polygon(Point(12582.67578125, 12813.448242188), Point(12690.27734375, 12728.989257813), Point(12836.993164063, 12723.16796875), Point(12982.115234375, 12762.678710938), Point(13056.79296875, 12889.69140625), Point(13094.862304688, 13022.000976563), Point(13054.704101563, 13157.666015625), Point(12983.713867188, 13274.098632813), Point(12862.555664063, 13353.499023438), Point(12711.381835938, 13354.970703125), Point(12584.7109375, 13282.94140625), Point(12523.465820313, 13152.310546875), Point(12474.953125, 13020.349609375), Point(12536.537109375, 12882.631835938)),
	Polygon(Point(12549.551757813, 12389.419921875), Point(12608.216796875, 12343.96875), Point(12658.71484375, 12301.052734375), Point(12714.247070313, 12302.219726563), Point(12765.48828125, 12354.860351563), Point(12810.21875, 12401.856445313), Point(12816.118164063, 12444.743164063), Point(12784.608398438, 12495.576171875), Point(12726.681640625, 12556.577148438), Point(12667.741210938, 12596.74609375), Point(12599.709960938, 12597.336914063), Point(12547.958007813, 12549.639648438), Point(12516.697265625, 12492.805664063), Point(12527.818359375, 12419.037109375)),
	Polygon(Point(9545.4970703125, 7327.9443359375), Point(9560.9560546875, 7472.4721679688), Point(9497.7529296875, 7607.962890625), Point(9443.54296875, 7764.404296875), Point(9436.109375, 7929.5219726563), Point(9468.173828125, 8081.0961914063), Point(9541.451171875, 8217.537109375), Point(9620.87109375, 8339.7431640625), Point(9630.333984375, 8473.921875), Point(9512.8603515625, 8548.638671875), Point(9361.953125, 8563.1953125), Point(9210.736328125, 8563.03515625), Point(9075.2060546875, 8489.2607421875), Point(8977.884765625, 8364.5791015625), Point(8868.2392578125, 8253.595703125), Point(8748.7490234375, 8159.3715820313), Point(8643.091796875, 8051.9760742188), Point(8563.146484375, 7933.3120117188), Point(8505.8017578125, 7801.9223632813), Point(8541.3046875, 7654.9467773438), Point(8608.4912109375, 7529.9072265625), Point(8693.1806640625, 7403.4975585938), Point(8777.71484375, 7278.0751953125), Point(8919.392578125, 7222.87109375), Point(9064.1474609375, 7187.203125), Point(9207.369140625, 7155.1801757813), Point(9352.1982421875, 7138.56640625), Point(9477.3251953125, 7189.4008789063)),
	Polygon(Point(3239.4406738281, 4123.7534179688), Point(3322.0139160156, 4243.310546875), Point(3380.2365722656, 4340.49609375), Point(3279.3781738281, 4421.8735351563), Point(3158.3498535156, 4521.2270507813), Point(3025.2951660156, 4594.1459960938), Point(2882.2944335938, 4645.869140625), Point(2733.1569824219, 4658.1401367188), Point(2574.5671386719, 4693.8872070313), Point(2430.8869628906, 4747.3999023438), Point(2281.9946289063, 4754.7626953125), Point(2142.5268554688, 4808.400390625), Point(1975.5964355469, 4791.8696289063), Point(1830.6567382813, 4854.7377929688), Point(1678.3825683594, 4864.896484375), Point(1523.6228027344, 4864.6875), Point(1375.7213134766, 4856.6904296875), Point(1285.9649658203, 4765.5478515625), Point(1230.5720214844, 4646.8930664063), Point(1214.0833740234, 4495.28125), Point(1254.7160644531, 4379.7514648438), Point(1384.4830322266, 4385.0346679688), Point(1531.9051513672, 4362.4067382813), Point(1674.9879150391, 4337.875), Point(1826.9456787109, 4304.8715820313), Point(1974.2523193359, 4268.07421875), Point(2131.1079101563, 4274.1123046875), Point(2283.0646972656, 4254.5673828125), Point(2431.0251464844, 4232.3842773438), Point(2579.7258300781, 4216.8520507813), Point(2729.5212402344, 4182.6455078125), Point(2881.8559570313, 4163.6640625), Point(3029.5148925781, 4122.7080078125), Point(3173.3146972656, 4090.9233398438)),
	Polygon(Point(11051.801757813, 11373.985351563), Point(11165.717773438, 11275.469726563), Point(11281.733398438, 11255.646484375), Point(11381.07421875, 11333.15625), Point(11440.202148438, 11467.706054688), Point(11404.73046875, 11584.534179688), Point(11301.662109375, 11643.852539063), Point(11169.486328125, 11644.079101563), Point(11067.555664063, 11579.676757813), Point(11018.21484375, 11454.750976563)),
	Polygon(Point(2895.4396972656, 7508.7587890625), Point(3033.5393066406, 7450.109375), Point(3190.7807617188, 7457.2182617188), Point(3343.0952148438, 7462.6118164063), Point(3495.4182128906, 7459.1088867188), Point(3658.4704589844, 7459.9521484375), Point(3718.7424316406, 7610.1572265625), Point(3726.9221191406, 7777.603515625), Point(3576.7275390625, 7848.4799804688), Point(3463.3374023438, 7910.6865234375), Point(3401.3041992188, 8026.3408203125), Point(3398.3134765625, 8178.12109375), Point(3416.6059570313, 8335.59765625), Point(3411.7133789063, 8512.173828125), Point(3298.3725585938, 8621.015625), Point(3285.3029785156, 8750.2861328125), Point(3365.9645996094, 8882.2001953125), Point(3413.1013183594, 9030.8984375), Point(3474.8530273438, 9126.23046875), Point(3580.2375488281, 9108.30078125), Point(3688.5808105469, 9010.6455078125), Point(3818.0300292969, 8920.34765625), Point(3940.798828125, 8828.7548828125), Point(4079.8793945313, 8753.2822265625), Point(4208.8920898438, 8668.388671875), Point(4341.2036132813, 8622.1162109375), Point(4357.4145507813, 8552.5673828125), Point(4288.41796875, 8485.509765625), Point(4162.796875, 8394.6171875), Point(4046.5336914063, 8287.2353515625), Point(3953.4289550781, 8157.8686523438), Point(3934.4018554688, 7995.8168945313), Point(3989.2224121094, 7841.6904296875), Point(4078.580078125, 7714.2319335938), Point(4141.8466796875, 7583.5908203125), Point(4185.2236328125, 7446.4672851563), Point(4094.6142578125, 7331.7158203125), Point(3980.630859375, 7228.60546875), Point(3828.6928710938, 7219.0112304688), Point(3671.6381835938, 7235.6098632813), Point(3529.6647949219, 7210.3374023438), Point(3381.9252929688, 7192.4848632813), Point(3226.2800292969, 7186.03515625), Point(3072.3562011719, 7183.8427734375), Point(2922.21875, 7184.6225585938), Point(2780.7111816406, 7212.4736328125), Point(2776.0666503906, 7340.03515625)),
	Polygon(Point(3638.3037109375, 2027.5947265625), Point(3682.4663085938, 2083.4536132813), Point(3726.2866210938, 2136.9965820313), Point(3721.2998046875, 2192.5847167969), Point(3664.5251464844, 2244.8898925781), Point(3598.5615234375, 2296.7065429688), Point(3541.8037109375, 2289.8444824219), Point(3515.4782714844, 2251.8286132813), Point(3475.3979492188, 2241.6391601563), Point(3445.6723632813, 2174.4340820313), Point(3429.7353515625, 2120.8657226563), Point(3457.8657226563, 2073.2592773438), Point(3512.4741210938, 2033.0590820313), Point(3582.2438964844, 2015.8486328125)),
	Polygon(Point(1476.2127685547, 2018.5373535156), Point(1477.8780517578, 2072.4372558594), Point(1416.7783203125, 2121.59375), Point(1377.2615966797, 2159.0029296875), Point(1347.4670410156, 2168.7138671875), Point(1280.7294921875, 2140.7407226563), Point(1231.5231933594, 2120.3935546875), Point(1216.4117431641, 2082.6137695313), Point(1211.1173095703, 2015.9509277344), Point(1240.728515625, 1962.8607177734), Point(1290.0982666016, 1918.8781738281), Point(1345.8897705078, 1900.3747558594), Point(1372.3782958984, 1890.8983154297), Point(1407.0025634766, 1923.126953125), Point(1452.2984619141, 1957.3934326172)),
	Polygon(Point(2040.1119384766, 6759.7348632813), Point(2030.7414550781, 6609.0639648438), Point(2031.3558349609, 6455.2094726563), Point(2008.9384765625, 6308.9799804688), Point(1976.7150878906, 6152.5698242188), Point(1988.5334472656, 5987.9658203125), Point(2031.470703125, 5832.05078125), Point(2138.9370117188, 5722.2104492188), Point(2240.8212890625, 5628.9008789063), Point(2206.6418457031, 5491.7622070313), Point(2087.1735839844, 5407.2939453125), Point(1973.1235351563, 5323.3247070313), Point(1832.1807861328, 5329.4399414063), Point(1684.7380371094, 5327.4272460938), Point(1534.1203613281, 5345.0825195313), Point(1418.4357910156, 5391.2099609375), Point(1356.6423339844, 5507.9345703125), Point(1352.6229248047, 5661.7309570313), Point(1350.0642089844, 5815.546875), Point(1348.2307128906, 5971.9526367188), Point(1348.0238037109, 6123.1708984375), Point(1348.0986328125, 6277.087890625), Point(1348.3706054688, 6429.0014648438), Point(1348.0194091797, 6581.802734375), Point(1355.2772216797, 6735.3203125), Point(1362.9946289063, 6888.8940429688), Point(1357.1405029297, 7040.4526367188), Point(1355.5256347656, 7190.5834960938), Point(1364.5189208984, 7323.6225585938), Point(1495.7478027344, 7313.2719726563), Point(1618.5544433594, 7240.8999023438), Point(1737.9976806641, 7152.7993164063), Point(1860.3344726563, 7069.7993164063), Point(1969.9338378906, 6974.587890625), Point(2045.0668945313, 6863.5126953125)),
	Polygon(Point(8417, 8257), Point(8444.1796875, 8185.328125), Point(8516.501953125, 8143.5629882813), Point(8573.8583984375, 8138.4165039063), Point(8646.7158203125, 8177.64453125), Point(8682.3916015625, 8254.6904296875), Point(8661.4013671875, 8327.8564453125), Point(8626.4599609375, 8389.171875), Point(8580.5859375, 8432.8779296875), Point(8517.57421875, 8423.4287109375), Point(8449.0224609375, 8408.13671875), Point(8417.0029296875, 8353.0595703125)),
	Polygon(Point(5401.2612304688, 6305.4711914063), Point(5335.796875, 6278.5712890625), Point(5312.4116210938, 6203.2807617188), Point(5310.8530273438, 6121.0073242188), Point(5376.2119140625, 6068.4501953125), Point(5439.4140625, 6039.7182617188), Point(5506.8852539063, 6057.8676757813), Point(5556.9326171875, 6104.2822265625), Point(5575.8041992188, 6199.2866210938), Point(5533.8305664063, 6263.0083007813), Point(5472.2348632813, 6303.1782226563)),
	Polygon(Point(11077.689453125, 13610.220703125), Point(10949.4921875, 13642.053710938), Point(10828.435546875, 13584.166992188), Point(10772.461914063, 13480.770507813), Point(10756.821289063, 13353.501953125), Point(10849.5234375, 13256.899414063), Point(10976.731445313, 13224.564453125), Point(11103.6875, 13294.34765625), Point(11171.440429688, 13414.947265625), Point(11135.0625, 13558.217773438)),
	Polygon(Point(5319.779296875, 3858.1823730469), Point(5364.4521484375, 3982.1088867188), Point(5406.7709960938, 4107.6918945313), Point(5466.4072265625, 4230.5859375), Point(5529.4169921875, 4350.4604492188), Point(5614.521484375, 4456.9169921875), Point(5692.5048828125, 4556.4716796875), Point(5641.58984375, 4637.7548828125), Point(5559.744140625, 4683.8627929688), Point(5445.755859375, 4700.5908203125), Point(5325.427734375, 4723.6088867188), Point(5199.4028320313, 4722.5322265625), Point(5090.77734375, 4669.7333984375), Point(4985.0571289063, 4612.1118164063), Point(4890.0625, 4524.2890625), Point(4788.9067382813, 4436.677734375), Point(4695.1127929688, 4350.3227539063), Point(4598.9204101563, 4262.4262695313), Point(4519.5922851563, 4163.982421875), Point(4478.5751953125, 4058.6381835938), Point(4549.1943359375, 4015.8840332031), Point(4657.7470703125, 3925.6042480469), Point(4720.4692382813, 3797.4621582031), Point(4779.8466796875, 3676.9458007813), Point(4845.37109375, 3576.8884277344), Point(4952.9770507813, 3526.294921875), Point(5086.0327148438, 3523.4948730469), Point(5203.7368164063, 3557.212890625), Point(5262.205078125, 3661.9028320313), Point(5302.1987304688, 3786.9721679688)),
	Polygon(Point(7215.8666992188, 1470.9251708984), Point(7060.0546875, 1475.8782958984), Point(6908.0068359375, 1470.7752685547), Point(6751.4877929688, 1465.7579345703), Point(6597.9370117188, 1466.6440429688), Point(6441.7426757813, 1465.9483642578), Point(6286.849609375, 1467.7299804688), Point(6139.8583984375, 1481.2882080078), Point(6044.2280273438, 1574.3812255859), Point(5971.849609375, 1686.9283447266), Point(5913.3549804688, 1816.2371826172), Point(5855.55859375, 1951.5036621094), Point(5925.9873046875, 2079.6494140625), Point(6010.1103515625, 2160.8637695313), Point(6127.8588867188, 2200.69921875), Point(6266.0859375, 2257.9682617188), Point(6400.9790039063, 2309.8654785156), Point(6553.830078125, 2312.2932128906), Point(6707.3671875, 2308.7045898438), Point(6846.4301757813, 2258.3901367188), Point(6952.0874023438, 2155.2277832031), Point(7050.5053710938, 2037.630859375), Point(7146.2744140625, 1918.9118652344), Point(7276.3876953125, 1846.0384521484), Point(7410.4399414063, 1774.7755126953), Point(7528.1196289063, 1692.9471435547), Point(7511.5561523438, 1560.8510742188), Point(7417.1196289063, 1484.3364257813)),
	Polygon(Point(6551.3520507813, 1406.5052490234), Point(6480.7626953125, 1391.927734375), Point(6411.4477539063, 1355.6381835938), Point(6370.0493164063, 1301.5396728516), Point(6365.5463867188, 1237.3530273438), Point(6409.6420898438, 1180.4260253906), Point(6472.166015625, 1130.7639160156), Point(6554.2124023438, 1128.6094970703), Point(6612.9013671875, 1169.1215820313), Point(6637.892578125, 1234.4415283203), Point(6628.6606445313, 1306.3675537109), Point(6604.3725585938, 1365.5588378906)),
	Polygon(Point(8036.5556640625, 6690.3266601563), Point(8152.9741210938, 6618.349609375), Point(8281.3408203125, 6534.7080078125), Point(8411.14453125, 6461.9365234375), Point(8546.0400390625, 6388.6962890625), Point(8680.294921875, 6318.8432617188), Point(8810.6533203125, 6235.5961914063), Point(8941.2578125, 6165.4848632813), Point(9080.9951171875, 6118.578125), Point(9215.9189453125, 6184.0161132813), Point(9340.232421875, 6254.275390625), Point(9454.7470703125, 6327.158203125), Point(9541.5673828125, 6443.5610351563), Point(9509.5625, 6576.2993164063), Point(9400.5244140625, 6647.2758789063), Point(9257.4248046875, 6694.6186523438), Point(9112.3115234375, 6733.7084960938), Point(8971.42578125, 6772.8525390625), Point(8825.7548828125, 6802.26171875), Point(8687.2412109375, 6878.384765625), Point(8574.66796875, 6982.9130859375), Point(8459.283203125, 7085.9663085938), Point(8359.8466796875, 7199.2280273438), Point(8268.611328125, 7312.8911132813), Point(8140.1948242188, 7328.3583984375), Point(8060.4916992188, 7222.6860351563), Point(7985.8930664063, 7091.3408203125), Point(7910.771484375, 6975.5498046875), Point(7905.4331054688, 6842.1069335938)),
	Polygon(Point(3147.2814941406, 3349.1577148438), Point(3180.4753417969, 3306.8547363281), Point(3245.8469238281, 3308.1982421875), Point(3297.6489257813, 3343.3999023438), Point(3350.0903320313, 3369.0974121094), Point(3373.8039550781, 3429.4428710938), Point(3378.5847167969, 3507.6772460938), Point(3331.8493652344, 3559.2053222656), Point(3292.7556152344, 3599.7888183594), Point(3237.5771484375, 3588.0693359375), Point(3170.2592773438, 3559.5803222656), Point(3123.138671875, 3537.0014648438), Point(3112.9028320313, 3492.6354980469), Point(3103.8303222656, 3441.888671875), Point(3126.1164550781, 3381.4858398438)),
	Polygon(Point(13315.161132813, 2645.1635742188), Point(13264.229492188, 2498.654296875), Point(13175.346679688, 2347.1411132813), Point(13091.766601563, 2191.1508789063), Point(12998.048828125, 2052.3122558594), Point(12879.806640625, 1886.3408203125), Point(12735.155273438, 1738.5317382813), Point(12601.572265625, 1618.9720458984), Point(12474.862304688, 1444.4140625), Point(12352.224609375, 1317.8675537109), Point(12303.1484375, 1284.4705810547), Point(12170.3359375, 1202.0737304688), Point(11973.684570313, 1093.5946044922), Point(11788.341796875, 972.07836914063), Point(11626.165039063, 914.36694335938), Point(11443.43359375, 870.05383300781), Point(11284.725585938, 822.26135253906), Point(11109.624023438, 764.71832275391), Point(10960.930664063, 721.74151611328), Point(10786.880859375, 686.58758544922), Point(10630.463867188, 660.99200439453), Point(10468.114257813, 646.98291015625), Point(10284.51953125, 606.39788818359), Point(10165.659179688, 601.50616455078), Point(10071.053710938, 567.47491455078), Point(9977.41796875, 488.93359375), Point(10088.890625, 272.54748535156), Point(10176.836914063, 128.12243652344), Point(10250.712890625, -29.204223632813), Point(10421.114257813, -49.051818847656), Point(10586.499023438, -51.326232910156), Point(10739.306640625, -51.84375), Point(10910.235351563, -65.824279785156), Point(11073.7265625, -34.899169921875), Point(11246.46484375, 16.616516113281), Point(11420.037109375, -24.605651855469), Point(11704.599609375, -48.816711425781), Point(11860.615234375, 7.30419921875), Point(12017.259765625, -70.463012695313), Point(12188.346679688, -38.35400390625), Point(12371.95703125, -2.3154907226563), Point(12518.673828125, -72.313110351563), Point(12689.168945313, 1.627685546875), Point(12824.936523438, 88.329833984375), Point(12957.397460938, 171.14245605469), Point(13097.5078125, 279.73388671875), Point(13256.122070313, 400.62280273438), Point(13389.958984375, 533.26086425781), Point(13502.23828125, 664.01745605469), Point(13607.293945313, 816.42041015625), Point(13727.8828125, 1016.8843994141), Point(13837.15625, 1243.2711181641), Point(13906.8984375, 1412.3941650391), Point(13967.453125, 1578.9002685547), Point(14033.315429688, 1748.1072998047), Point(14081.889648438, 1906.3218994141), Point(14129.12890625, 2100.7622070313), Point(14135.864257813, 2291.9892578125), Point(14112.106445313, 2446.5615234375), Point(14067.359375, 2608.0952148438), Point(13953.720703125, 2708.5576171875), Point(13796.6171875, 2759.8276367188), Point(13620.96484375, 2768.44140625), Point(13457.081054688, 2742.6591796875)),
	Polygon(Point(10917.836914063, 7738.486328125), Point(10813.59765625, 7632.4458007813), Point(10677.525390625, 7573.9311523438), Point(10539.571289063, 7522.4448242188), Point(10388.516601563, 7514.0395507813), Point(10236.024414063, 7520.4926757813), Point(10114.548828125, 7601.9916992188), Point(9994.0380859375, 7690.0766601563), Point(9907.470703125, 7798.9780273438), Point(9879.3115234375, 7925.02734375), Point(9912.5615234375, 8064.3984375), Point(9933.9521484375, 8220.931640625), Point(10029.416992188, 8339.3173828125), Point(10149.473632813, 8432.130859375), Point(10266.16015625, 8527.49609375), Point(10417.126953125, 8509.0634765625), Point(10400.080078125, 8370.8623046875), Point(10374.669921875, 8231.4970703125), Point(10327.518554688, 8049.046875), Point(10487.69921875, 7926.7260742188), Point(10650.327148438, 7963.271484375), Point(10794.369140625, 8011.8203125), Point(10943.384765625, 8033.0258789063), Point(11020.147460938, 7897.5620117188)),
	Polygon(Point(9959.4482421875, 832.74005126953), Point(9969.4345703125, 762.75708007813), Point(10009.7109375, 720.44818115234), Point(10050.458007813, 689.15307617188), Point(10131.33984375, 691.22467041016), Point(10193.888671875, 703.38891601563), Point(10227.836914063, 763.22247314453), Point(10234.525390625, 836.39678955078), Point(10210.806640625, 891.3173828125), Point(10171.4375, 942.99108886719), Point(10103.787109375, 947.33764648438), Point(10049.98046875, 934.08386230469), Point(9992.275390625, 903.75927734375)),
	Polygon(Point(5764.0307617188, 7118.6577148438), Point(5882.2670898438, 7044.1020507813), Point(6020.5595703125, 7024.5922851563), Point(6154.7216796875, 7079.248046875), Point(6243.0034179688, 7203.3828125), Point(6178.0659179688, 7344.54296875), Point(6068.2290039063, 7454.4672851563), Point(6001.7524414063, 7597.7944335938), Point(5943.4443359375, 7747.8510742188), Point(5833.1904296875, 7844.0908203125), Point(5696.7612304688, 7911.3818359375), Point(5577.3520507813, 8008.3720703125), Point(5432.4145507813, 8072.6796875), Point(5306.314453125, 8158.5131835938), Point(5174.306640625, 8235.3671875), Point(5047.4155273438, 8283.208984375), Point(4909.2231445313, 8286), Point(4774.2221679688, 8235.2138671875), Point(4635.3896484375, 8161.1147460938), Point(4529.3549804688, 8075.7309570313), Point(4465.57421875, 7960.3862304688), Point(4399.2416992188, 7823.4545898438), Point(4547.0737304688, 7782.7802734375), Point(4703.1997070313, 7777.7114257813), Point(4864.794921875, 7761.0073242188), Point(5013.3540039063, 7722.1166992188), Point(5163.0219726563, 7674.0791015625), Point(5308.2080078125, 7601.0830078125), Point(5431.7553710938, 7509.2690429688), Point(5568.0385742188, 7418.4135742188), Point(5657.4462890625, 7272.408203125)),
	Polygon(Point(7921.4506835938, 9752.91796875), Point(7936.3442382813, 9615.6259765625), Point(7907.1782226563, 9442.7060546875), Point(8056.33984375, 9336.5703125), Point(8221.025390625, 9357.427734375), Point(8374.412109375, 9371.4033203125), Point(8509.6083984375, 9446.1650390625), Point(8534.443359375, 9341.0166015625), Point(8461.296875, 9236.5361328125), Point(8353.22265625, 9121.798828125), Point(8242.5908203125, 9010.8681640625), Point(8132.123046875, 8905.2529296875), Point(8000.3754882813, 8817.830078125), Point(7884.1806640625, 8709.9775390625), Point(7759.8017578125, 8607.0947265625), Point(7625.6865234375, 8559.0263671875), Point(7478.5131835938, 8514.90234375), Point(7356.1196289063, 8613.9140625), Point(7232.884765625, 8710.328125), Point(7104.1240234375, 8799.025390625), Point(6977.2270507813, 8894.267578125), Point(6853.68359375, 9004.87890625), Point(6723.1948242188, 9104.98046875), Point(6697.4360351563, 9258.501953125), Point(6717.4296875, 9407.85546875), Point(6859.5537109375, 9456.26953125), Point(7001.0913085938, 9456.0166015625), Point(7139.6430664063, 9432.0419921875), Point(7241.1044921875, 9325.404296875), Point(7212.8154296875, 9149.26171875), Point(7355.345703125, 9036.7138671875), Point(7480.21875, 9058.4404296875), Point(7601.927734375, 9050.0439453125), Point(7597.1567382813, 9198.8232421875), Point(7630.3852539063, 9341.974609375), Point(7658.4658203125, 9502.6064453125), Point(7689.0258789063, 9652.3212890625), Point(7736.4497070313, 9772.3466796875), Point(7842.0859375, 9842.2705078125)),
	Polygon(Point(10536.577148438, 2328.3220214844), Point(10646.030273438, 2204.6765136719), Point(10634.412109375, 2043.28515625), Point(10694.625976563, 1903.4416503906), Point(10759.958007813, 1767.9343261719), Point(10866.0390625, 1707.5319824219), Point(10989.665039063, 1738.8286132813), Point(11112.540039063, 1810.5070800781), Point(11189.7421875, 1924.2224121094), Point(11230.372070313, 2069.9497070313), Point(11302.495117188, 2212.2673339844), Point(11355.46484375, 2364.220703125), Point(11351.915039063, 2501.5085449219), Point(11279.272460938, 2626.2531738281), Point(11169.96484375, 2727.6938476563), Point(11032.08984375, 2807.4233398438), Point(10907.068359375, 2910.7106933594), Point(10789.994140625, 3003.8293457031), Point(10682.3359375, 3088.4147949219), Point(10558.166992188, 3107.94921875), Point(10428.883789063, 3042.3107910156), Point(10292.685546875, 2956.091796875), Point(10232.627929688, 2847.8996582031), Point(10281.999023438, 2721.9228515625), Point(10353.209960938, 2590.6752929688), Point(10443.251953125, 2472.4936523438)),
	Polygon(Point(6769.5649414063, 8360.96875), Point(6656.306640625, 8463.087890625), Point(6514.3759765625, 8570), Point(6404.1982421875, 8682.0380859375), Point(6287.7607421875, 8766.0078125), Point(6146.783203125, 8807.56640625), Point(6001.1376953125, 8843.1376953125), Point(5947.2065429688, 8795.673828125), Point(5998.4208984375, 8738.0703125), Point(6113.6264648438, 8642.833984375), Point(6233.3657226563, 8548.0634765625), Point(6370.9624023438, 8468.6162109375), Point(6502.5849609375, 8381.7607421875), Point(6592.2265625, 8260.712890625), Point(6702.9702148438, 8144.8383789063), Point(6792.5219726563, 8025.0903320313), Point(6889.7158203125, 7903.3134765625), Point(6983.2099609375, 7796.0791015625), Point(7105.046875, 7843.6381835938), Point(7125.7729492188, 7970.4145507813), Point(7080.373046875, 8099.287109375), Point(6956.158203125, 8187.7827148438), Point(6848.0317382813, 8302.1552734375)),
	Polygon(Point(7757.0239257813, 10412.267578125), Point(7769, 10565), Point(7758.7397460938, 10713.93359375), Point(7767.6806640625, 10871.251953125), Point(7653.5561523438, 10975.403320313), Point(7515.0458984375, 11042.862304688), Point(7388.2958984375, 11119.08203125), Point(7289.7294921875, 11212.794921875), Point(7252.87890625, 11353.166015625), Point(7342.359375, 11465.53125), Point(7473.294921875, 11503.422851563), Point(7612.7705078125, 11502.705078125), Point(7765.5229492188, 11510.912109375), Point(7893.482421875, 11450.966796875), Point(7967.9462890625, 11338.283203125), Point(8032.5278320313, 11205.16015625), Point(8108.8481445313, 11063.896484375), Point(8191.15625, 10931.5546875), Point(8245.642578125, 10803.24609375), Point(8230.416015625, 10657.270507813), Point(8183.7646484375, 10507.360351563), Point(8110.6279296875, 10381.432617188), Point(8036.947265625, 10257.911132813), Point(7919.6489257813, 10193.424804688), Point(7781.0561523438, 10190.325195313), Point(7755.0893554688, 10336.595703125)),
	Polygon(Point(6840.8193359375, 4324.8627929688), Point(6743.1323242188, 4241.3647460938), Point(6714.8247070313, 4102.3701171875), Point(6712.56640625, 3951.4519042969), Point(6732.8559570313, 3815.7014160156), Point(6806.3056640625, 3734.0078125), Point(6914.2939453125, 3740.3273925781), Point(7003.8090820313, 3826.1062011719), Point(7031.9658203125, 4018.2404785156), Point(7240.9526367188, 4034.1286621094), Point(7393.2573242188, 4036.8237304688), Point(7563.4399414063, 4055.21484375), Point(7680.76171875, 3912.6081542969), Point(7677.2124023438, 3732.7954101563), Point(7553.638671875, 3613.0969238281), Point(7419.0649414063, 3560.0441894531), Point(7434.8852539063, 3455.6821289063), Point(7529.6079101563, 3402.1911621094), Point(7639.2397460938, 3330.4423828125), Point(7777.009765625, 3361.8393554688), Point(7908.8549804688, 3420.4670410156), Point(8006.8090820313, 3529.0708007813), Point(8099.9125976563, 3643.5795898438), Point(8180.8974609375, 3766.5285644531), Point(8186.0556640625, 3916.9038085938), Point(8232.556640625, 4061.4018554688), Point(8198.783203125, 4202.8872070313), Point(8160.5786132813, 4349.9868164063), Point(8098.966796875, 4470.4228515625), Point(8006.1635742188, 4554.3828125), Point(7861.5737304688, 4552.517578125), Point(7704.5400390625, 4547.4995117188), Point(7552.5185546875, 4541.1469726563), Point(7402.2661132813, 4497.3569335938), Point(7251.7143554688, 4470.5141601563), Point(7107.248046875, 4439.2822265625), Point(6965.7250976563, 4385.2431640625)),
	Polygon(Point(10177.134765625, 13571.3125), Point(10119.790039063, 13518.280273438), Point(10114.33984375, 13441.38671875), Point(10150.616210938, 13371.280273438), Point(10219.157226563, 13328.020507813), Point(10291.37890625, 13339.334960938), Point(10345.612304688, 13363.639648438), Point(10373.392578125, 13417.21484375), Point(10396.866210938, 13486.658203125), Point(10363.196289063, 13548.157226563), Point(10316.686523438, 13602.729492188), Point(10236.452148438, 13600.731445313)),
	Polygon(Point(12026.801757813, 7484.3681640625), Point(12160.763671875, 7411.7993164063), Point(12284.796875, 7329.98828125), Point(12408.44921875, 7242.3881835938), Point(12530.034179688, 7157.2504882813), Point(12662.587890625, 7157.583984375), Point(12687.400390625, 7291.5786132813), Point(12693.502929688, 7439.2998046875), Point(12691.9453125, 7592.7153320313), Point(12693.932617188, 7746.775390625), Point(12694.592773438, 7900.4638671875), Point(12694.71875, 8054.2587890625), Point(12694.627929688, 8208.095703125), Point(12689.286132813, 8361.90234375), Point(12683.747070313, 8515.7666015625), Point(12687.13671875, 8669.59375), Point(12691.193359375, 8823.4658203125), Point(12675.291992188, 8972.701171875), Point(12626.103515625, 9111.669921875), Point(12471.858398438, 9108.330078125), Point(12325.836914063, 9150.6220703125), Point(12175.338867188, 9160.8095703125), Point(12037.53125, 9121.5146484375), Point(11921.989257813, 9040.7705078125), Point(11812.486328125, 8941.98828125), Point(11823.104492188, 8803.4052734375), Point(11930.354492188, 8707.4755859375), Point(12023.788085938, 8576.7353515625), Point(12058.7890625, 8410.3095703125), Point(12028.500976563, 8252.7783203125), Point(12005.706054688, 8105.6713867188), Point(11952.400390625, 7962.9775390625), Point(11945.680664063, 7810.5146484375), Point(11948.360351563, 7660.19921875)),
	Polygon(Point(11257.325195313, 5934.4521484375), Point(11382.83984375, 5849.5180664063), Point(11492.419921875, 5740.7387695313), Point(11589.037109375, 5621.2993164063), Point(11613.790039063, 5471.4916992188), Point(11625.999023438, 5320.6201171875), Point(11660.254882813, 5178.1865234375), Point(11697.578125, 5044.84765625), Point(11742.896484375, 4911.9921875), Point(11800.696289063, 4844.2895507813), Point(11882.819335938, 4853.2646484375), Point(11874.100585938, 4990.71484375), Point(11838.899414063, 5137.3676757813), Point(11840.2578125, 5288.9296875), Point(11871.57421875, 5439.3720703125), Point(11877.412109375, 5590.5229492188), Point(11918.047851563, 5737.9487304688), Point(11924.908203125, 5886.3994140625), Point(11930.58984375, 6033.05859375), Point(11839.965820313, 6140.6796875), Point(11709.823242188, 6205.1752929688), Point(11567.12109375, 6255.3671875), Point(11434.530273438, 6322.0620117188), Point(11287.708007813, 6317.09765625), Point(11173.192382813, 6221.6254882813), Point(11109.8125, 6092.3676757813), Point(11188.530273438, 5972.9829101563)),
	Polygon(Point(7090.4135742188, 502.41482543945), Point(6932.5361328125, 542.02478027344), Point(6778.8095703125, 546.51965332031), Point(6627.8129882813, 558.88745117188), Point(6471.0053710938, 548.67297363281), Point(6294.9907226563, 556.72705078125), Point(6133.1411132813, 554.06494140625), Point(5947.9155273438, 561.82507324219), Point(5768.4375, 564.93151855469), Point(5602.484375, 561.51623535156), Point(5437.5419921875, 563.16540527344), Point(5266.9663085938, 551.02362060547), Point(5097.5673828125, 556.74475097656), Point(4911.501953125, 558.19073486328), Point(4759.025390625, 555.37945556641), Point(4595.4887695313, 552.09313964844), Point(4424.7075195313, 552.04656982422), Point(4322.7416992188, 540.12951660156), Point(4233.88671875, 474.35754394531), Point(4134.7719726563, 397.90133666992), Point(4050.0009765625, 352.0696105957), Point(3963.5458984375, 231.1142578125), Point(4052.46875, 73.373291015625), Point(4184.0576171875, -78.924560546875), Point(4324.9487304688, 9.9678955078125), Point(4490.34765625, -27.279418945313), Point(4733.0703125, -30.62646484375), Point(5064.607421875, -74.560302734375), Point(5230.033203125, -4.8125610351563), Point(5398.9145507813, -21.4091796875), Point(5550.677734375, -28.174255371094), Point(5834.3759765625, -31.375915527344), Point(6081.1440429688, -21.345703125), Point(6254.2739257813, -1.3372802734375), Point(6421.9750976563, 15.468383789063), Point(6608.240234375, -60.800048828125), Point(6812.2353515625, 15.3740234375), Point(6962.0952148438, 1.3316650390625), Point(7118.599609375, -28.39794921875), Point(7280.5209960938, 10.45751953125), Point(7338.1508789063, 157.33666992188), Point(7362.6396484375, 312.95739746094), Point(7249.2978515625, 426.58764648438)),
	Polygon(Point(12026.801757813, 7484.3681640625), Point(12160.763671875, 7411.7993164063), Point(12284.796875, 7329.98828125), Point(12408.44921875, 7242.3881835938), Point(12530.034179688, 7157.2504882813), Point(12662.587890625, 7157.583984375), Point(12687.400390625, 7291.5786132813), Point(12693.502929688, 7439.2998046875), Point(12691.9453125, 7592.7153320313), Point(12693.932617188, 7746.775390625), Point(12694.592773438, 7900.4638671875), Point(12694.71875, 8054.2587890625), Point(12694.627929688, 8208.095703125), Point(12689.286132813, 8361.90234375), Point(12683.747070313, 8515.7666015625), Point(12687.13671875, 8669.59375), Point(12691.193359375, 8823.4658203125), Point(12675.291992188, 8972.701171875), Point(12626.103515625, 9111.669921875), Point(12471.858398438, 9108.330078125), Point(12325.836914063, 9150.6220703125), Point(12175.338867188, 9160.8095703125), Point(12037.53125, 9121.5146484375), Point(11921.989257813, 9040.7705078125), Point(11812.486328125, 8941.98828125), Point(11823.104492188, 8803.4052734375), Point(11930.354492188, 8707.4755859375), Point(12023.788085938, 8576.7353515625), Point(12058.7890625, 8410.3095703125), Point(12028.500976563, 8252.7783203125), Point(12005.706054688, 8105.6713867188), Point(11952.400390625, 7962.9775390625), Point(11945.680664063, 7810.5146484375), Point(11948.360351563, 7660.19921875)),
	Polygon(Point(12145, 13013), Point(12069.065429688, 13014.67578125), Point(12012.672851563, 12953.833984375), Point(11973.942382813, 12910.14453125), Point(11958.610351563, 12853.736328125), Point(11988.58203125, 12780.668945313), Point(12046.806640625, 12735.046875), Point(12117.080078125, 12729.838867188), Point(12185.567382813, 12743.389648438), Point(12225.575195313, 12803.530273438), Point(12255.934570313, 12859.2109375), Point(12263.861328125, 12914.166992188), Point(12221.2578125, 12978.983398438)),
	Polygon(Point(57.350742340088, 2411.5656738281), Point(79.669555664063, 2504.0200195313), Point(84.423347473145, 2644.8779296875), Point(88.105239868164, 2813.3234863281), Point(84.41626739502, 2974.3256835938), Point(95.326553344727, 3160.15234375), Point(93.648956298828, 3318.7590332031), Point(89.360130310059, 3475.6665039063), Point(95.054382324219, 3657.5515136719), Point(90.369140625, 3824.6057128906), Point(92.71257019043, 3995.1457519531), Point(165.28771972656, 4163.0712890625), Point(228.02821350098, 4311.478515625), Point(275.65673828125, 4464.8403320313), Point(290.65509033203, 4632.7592773438), Point(321.02682495117, 4786.7563476563), Point(325.45223999023, 4970.6127929688), Point(343.92352294922, 5127.388671875), Point(258.16931152344, 5245.5244140625), Point(93.119750976563, 5296.10546875), Point(-59.170166015625, 5304.611328125), Point(-215.71374511719, 5304.62109375), Point(-272.18115234375, 5152.7958984375), Point(-227.31518554688, 4991.966796875), Point(-219.76489257813, 4824.85546875), Point(-31.121459960938, 4805.5869140625), Point(-212.16186523438, 4551.2739257813), Point(-241.23449707031, 4377.759765625), Point(-242.91784667969, 4171.2880859375), Point(-244.40112304688, 4010.2136230469), Point(-237.11804199219, 3822.2902832031), Point(-228.03771972656, 3636.79296875), Point(-201.52685546875, 3463.0502929688), Point(-275.69360351563, 3300.2507324219), Point(-236.48974609375, 3151.2333984375), Point(-295.88928222656, 2972.0673828125), Point(-223.91979980469, 2820.5532226563), Point(-211.54455566406, 2665.4445800781), Point(-170.89331054688, 2505.0344238281), Point(-110.92419433594, 2362.6931152344)),
	Polygon(Point(7286.064453125, 10514.071289063), Point(7291.5473632813, 10364.463867188), Point(7279.1884765625, 10215.4453125), Point(7177.412109375, 10110.068359375), Point(7038.4663085938, 10043.249023438), Point(6888.7504882813, 10003.18359375), Point(6736.8125, 9971.60546875), Point(6586.9233398438, 9921.26953125), Point(6423.478515625, 9932.5830078125), Point(6269.28125, 9928.0166015625), Point(6117.193359375, 9918.4462890625), Point(5971.8295898438, 9942.4541015625), Point(5889.955078125, 10052.21484375), Point(5839.2104492188, 10194.11328125), Point(5808.7602539063, 10342.771484375), Point(5801.2509765625, 10494.760742188), Point(5833.4418945313, 10650.630859375), Point(5898.8159179688, 10789.462890625), Point(5991.8344726563, 10898.346679688), Point(6103.2475585938, 11005.819335938), Point(6212.361328125, 11112.8984375), Point(6351.3662109375, 11149.666015625), Point(6492.302734375, 11151.262695313), Point(6578.1142578125, 11051.220703125), Point(6592.40625, 10907.095703125), Point(6410.3291015625, 10835.525390625), Point(6374.0751953125, 10647.33984375), Point(6376.0932617188, 10474.299804688), Point(6559.5473632813, 10449.466796875), Point(6719.4418945313, 10456.126953125), Point(6888.6977539063, 10434.932617188), Point(6985.73046875, 10568.708007813), Point(7058.9375, 10690.276367188), Point(7205.1245117188, 10700.263671875))
}

-- Code ------------------------------------------------------------------------

function fileExists(name)
	local f = io.open(name, "r") if f ~= nil then io.close(f) return true else return false end
end

function los(x0, y0, x1, y1, callback)
	local sx,sy,dx,dy

	if x0 < x1 then
		sx = 1
		dx = x1 - x0
	else
		sx = -1
		dx = x0 - x1
	end

	if y0 < y1 then
		sy = 1
		dy = y1 - y0
	else
		sy = -1
		dy = y0 - y1
	end

	local err, e2 = dx-dy, nil

	if not callback(x0, y0) then return false end

	while not(x0 == x1 and y0 == y1) do
		e2 = err + err
		if e2 > -dy then
			err = err - dy
			x0  = x0 + sx
		end

		if e2 < dx then
			err = err + dx
			y0  = y0 + sy
		end

		if not callback(x0, y0) then return false end
	end

	return true
end

function line(x0, y0, x1, y1, callback)
	local points = {}
	local count = 0

	local result = los(x0, y0, x1, y1, function(x,y)
		if callback and not callback(x, y) then return false end

		count = count + 1
		points[count] = {x, y}

		return true
	end)

	return points, result
end

class 'SpatialHashMap' -- {
	function SpatialHashMap:__init(spatialObjects, intervalSize, cacheId)
		if intervalSize == nil then intervalSize = 400 end

		self.hashTables = {}
		self.intervalSize = intervalSize
		self.cacheId = cacheId

		if cacheId then
			self.tempCachedData = {}
		end

		self:loadObjects(spatialObjects)
	end

	function SpatialHashMap:loadObjects(spatialObjects)
		if self.cacheId and fileExists(SCRIPT_PATH .. "Common/MapPosition_" .. self.cacheId .. ".lua") then
			_G.s = spatialObjects require ("MapPosition_" .. self.cacheId)

			self.hashTables = _G.h return
		end
			
		for i, spatialObject in ipairs(spatialObjects) do
			local addResult = self:add(spatialObject)

			if self.cacheId then
				self:cacheObject(addResult, i)
			end
		end
		for i, spatialObject in pairs(spatialObjects) do
			local addResult = self:add(spatialObject)

			if self.cacheId then
				self:cacheObject(addResult, i)
			end
		end

		if self.cacheId then
			self:writeCache()
		end
	end

	function SpatialHashMap:cacheObject(addResult, objectIdentifier)
		for k, v in pairs(addResult) do
			if not self.tempCachedData[k] then
				self.tempCachedData[k] = {objectIdentifier}
			else
				table.insert(self.tempCachedData[k], objectIdentifier)
			end
		end
	end

	function SpatialHashMap:writeCache()
		local res = "_G.h={"
		for a, b in pairs(self.tempCachedData) do
			if res == "_G.h={" then
				res = res .. "[\"" .. a .. "\"]={"
			else
				res = res .. ",[\"" .. a .. "\"]={"
			end

			cols = ""
			for c, d in ipairs(b) do
				if cols == "" then
					if type(d) == "number" then
						cols = cols .. "_G.s[" .. tostring(d) .. "]"
					else
						cols = cols .. "_G.s[\"" .. d .. "\"]"
					end
				else
					if type(d) == "number" then
						cols = cols .. ",_G.s[" .. tostring(d) .. "]"
					else
						cols = cols .. ",_G.s[\"" .. d .. "\"]"
					end
				end
			end
			res = res .. cols .. "}"
		end
		res = res .. "}"

		local file, error = assert(io.open(SCRIPT_PATH .. "Common/MapPosition_" .. self.cacheId .. ".lua", "w+")) if error then return error end file:write(res) file:close()
	end

	function SpatialHashMap:add(spatialObject)
		if spatialObject:__type() == "Circle" then
			leftX = spatialObject.point.x - spatialObject.radius
			rightX = spatialObject.point.x + spatialObject.radius
			bottomY = spatialObject.point.y - spatialObject.radius
			topY = spatialObject.point.y + spatialObject.radius
		else
			leftX = math.huge
			rightX = -math.huge
			bottomY = math.huge
			topY = -math.huge
			for i, point in ipairs(spatialObject:getPoints()) do
				leftX = math.min(leftX, point.x)
				rightX = math.max(rightX, point.x)
				bottomY = math.min(bottomY, point.y)
				topY = math.max(topY, point.y)
			end
		end

		foundHashCodes = {}
		if spatialObject:__type() == "Circle" then
			for x = math.floor(leftX / self.intervalSize), math.floor(rightX / self.intervalSize), 1 do
				for y = math.floor(bottomY / self.intervalSize), math.floor(topY / self.intervalSize), 1 do
					hashCode = self:calculateHashCode(Point(x * self.intervalSize, y * self.intervalSize))
					if self.hashTables[hashCode] == nil then
						self.hashTables[hashCode] = {}
					end

					if foundHashCodes[hashCode] == nil then
						self.hashTables[hashCode][tostring(spatialObject.uniqueId)] = spatialObject
						foundHashCodes[hashCode] = hashCode
					end
				end
			end
		else
			for i, lineSegment in ipairs(spatialObject:getLineSegments()) do
				for x = math.floor(leftX / self.intervalSize), math.floor(rightX / self.intervalSize), 1 do
					for y = math.floor(bottomY / self.intervalSize), math.floor(topY / self.intervalSize), 1 do
						local quadraliterate = Polygon(Point(x * self.intervalSize, y * self.intervalSize), Point(x * self.intervalSize, y * self.intervalSize + self.intervalSize), Point(x * self.intervalSize + self.intervalSize, y * self.intervalSize + self.intervalSize), Point(x * self.intervalSize + self.intervalSize, y * self.intervalSize))

						hashCode = self:calculateHashCode(quadraliterate.points[1])
						if (quadraliterate:intersects(lineSegment) or spatialObject:contains(quadraliterate.points[1]) or quadraliterate:contains(lineSegment)) and foundHashCodes[hashCode] == nil then
							if self.hashTables[hashCode] == nil then
								self.hashTables[hashCode] = {}
							end

							self.hashTables[hashCode][tostring(spatialObject.uniqueId)] = spatialObject
							foundHashCodes[hashCode] = hashCode
						end
					end
				end
			end
		end
		return foundHashCodes
	end

	function SpatialHashMap:remove(spatialObject)
		leftX = math.huge
		rightX = -math.huge
		bottomY = math.huge
		topY = -math.huge
		for i, point in ipairs(spatialObject:getPoints()) do
			leftX = math.min(leftX, point.x)
			rightX = math.max(rightX, point.x)
			bottomY = math.min(bottomY, point.y)
			topY = math.max(topY, point.y)
		end

		foundHashCodes = {}
		for i, lineSegment in ipairs(spatialObject:getLineSegments()) do
			for x = math.floor(leftX / self.intervalSize), math.floor(rightX / self.intervalSize), 1 do
				for y = math.floor(bottomY / self.intervalSize), math.floor(topY / self.intervalSize), 1 do
					local quadraliterate = Polygon(Point(x * self.intervalSize, y * self.intervalSize), Point(x * self.intervalSize, y * self.intervalSize + self.intervalSize), Point(x * self.intervalSize + self.intervalSize, y * self.intervalSize + self.intervalSize), Point(x * self.intervalSize + self.intervalSize, y * self.intervalSize))

					hashCode = self:calculateHashCode(quadraliterate.points[1])
					if (quadraliterate:intersects(lineSegment) or spatialObject:contains(quadraliterate.points[1]) or quadraliterate:contains(lineSegment)) and foundHashCodes[hashCode] == nil then
						self.hashTables[hashCode][tostring(spatialObject.uniqueId)] = nil

						foundHashCodes[hashCode] = hashCode
					end
				end
			end
		end
	end

	function SpatialHashMap:calculateHashCode(point)
		return tostring(math.floor(point.x / self.intervalSize)) .. "-" .. tostring(math.floor(point.y / self.intervalSize))
	end

	function SpatialHashMap:getSpatialObjects(referencePoint, range)
		if referencePoint == nil then
			local result = {}

			for hashCode, hashTable in pairs(self.hashTables) do
				for uniqueId, spatialObject in pairs(hashTable) do
					result[uniqueId] = spatialObject
				end
			end

			return result
		else
			if range == nil then range = 0 else range = math.ceil(range/self.intervalSize) end

			local result = {}

			hashCode = self:calculateHashCode(referencePoint)
			if self.hashTables[hashCode] ~= nil then
				for uniqueId, spatialObject in pairs(self.hashTables[hashCode]) do
					result[uniqueId] = spatialObject
				end
			end
			for i = 1, range, 1 do
				for k, directionVector in ipairs({Point(-1, -1), Point(-1, 0), Point(-1, 1), Point(0, -1), Point(0, 1), Point(1, -1), Point(1, 0), Point(1, 1)}) do
					hashCode = self:calculateHashCode(referencePoint + directionVector * i * self.intervalSize)
					if self.hashTables[hashCode] ~= nil then
						for uniqueId, spatialObject in pairs(self.hashTables[hashCode]) do
							result[uniqueId] = spatialObject
						end
					end
				end
    		end

			return result
		end
	end
-- }

class 'MapPosition' -- {
	function MapPosition:__init()
		self.wallSpatialHashMap = SpatialHashMap(walls, 400, "walls_1_1")
	end

	-- Wall Functions ---------------------------------------------------------

	function MapPosition:inWall(point)
		for wallId, wall in pairs(self.wallSpatialHashMap:getSpatialObjects(point)) do
			if wall:contains(point) then
				return true
			end
		end

		return false
	end

	function MapPosition:intersectsWall(pointOrLinesegment)
		local lineSegment = (pointOrLinesegment:__type() == "Point") and LineSegment(Point(myHero.x, myHero.z), pointOrLinesegment) or pointOrLinesegment

		return not los(math.floor(lineSegment.points[1].x / self.wallSpatialHashMap.intervalSize), math.floor(lineSegment.points[1].y / self.wallSpatialHashMap.intervalSize), math.floor(lineSegment.points[2].x / self.wallSpatialHashMap.intervalSize), math.floor(lineSegment.points[2].y / self.wallSpatialHashMap.intervalSize), function(x, y)
			for wallId, wall in pairs(self.wallSpatialHashMap:getSpatialObjects(Point(x * self.wallSpatialHashMap.intervalSize, y * self.wallSpatialHashMap.intervalSize))) do
				if wall:intersects(lineSegment) then
					return false
				end
			end

			return true
		end)
	end

	-- River Positions --------------------------------------------------------

	function MapPosition:inRiver(unit)
		return MapPosition:inTopRiver(unit) or MapPosition:inBottomRiver(unit)
	end

	function MapPosition:inTopRiver(unit)
		return regions["topOuterRiver"]:contains(Point(unit.x, unit.z))
	end

	function MapPosition:inTopInnerRiver(unit)
		return regions["topInnerRiver"]:contains(Point(unit.x, unit.z))
	end

	function MapPosition:inTopOuterRiver(unit)
		return MapPosition:inTopRiver(unit) and not MapPosition:inTopInnerRiver(unit)
	end

	function MapPosition:inBottomRiver(unit)
		return regions["bottomOuterRiver"]:contains(Point(unit.x, unit.z))
	end

	function MapPosition:inBottomInnerRiver(unit)
		return regions["bottomInnerRiver"]:contains(Point(unit.x, unit.z))
	end

	function MapPosition:inBottomOuterRiver(unit)
		return MapPosition:inBottomRiver(unit) and not MapPosition:inBottomInnerRiver(unit)
	end

	function MapPosition:inOuterRiver(unit)
		return MapPosition:inTopOuterRiver(unit) or MapPosition:inBottomOuterRiver(unit)
	end

	function MapPosition:inInnerRiver(unit)
		return MapPosition:inTopInnerRiver(unit) or MapPosition:inBottomInnerRiver(unit)
	end

	-- Base Positions ---------------------------------------------------------

	function MapPosition:inBase(unit)
		return not MapPosition:onLane(unit) and not MapPosition:inJungle(unit) and not MapPosition:inRiver(unit)
	end

	function MapPosition:inLeftBase(unit)
		return MapPosition:inBase(unit) and GetDistance({x = 50, y = 0, z = 285}, unit) < 6000
	end

	function MapPosition:inRightBase(unit)
		return MapPosition:inBase(unit) and GetDistance({x = 50, y = 0, z = 285}, unit) > 6000
	end

	-- Lane Positions ---------------------------------------------------------

	function MapPosition:onLane(unit)
		return MapPosition:onTopLane(unit) or MapPosition:onMidLane(unit) or MapPosition:onBotLane(unit)
	end

	function MapPosition:onTopLane(unit)
		unitPoint = Point(unit.x, unit.z)

		return regions["leftTopLane"]:contains(unitPoint) or regions["centerTopLane"]:contains(unitPoint) or regions["rightTopLane"]:contains(unitPoint)
	end

	function MapPosition:onMidLane(unit)
		unitPoint = Point(unit.x, unit.z)

		return regions["leftMidLane"]:contains(unitPoint) or regions["centerMidLane"]:contains(unitPoint) or regions["rightMidLane"]:contains(unitPoint)
	end

	function MapPosition:onBotLane(unit)
		unitPoint = Point(unit.x, unit.z)

		return regions["leftBotLane"]:contains(unitPoint) or regions["centerBotLane"]:contains(unitPoint) or regions["rightBotLane"]:contains(unitPoint)
	end

	-- Jungle Positions -------------------------------------------------------

	function MapPosition:inJungle(unit)
		return MapPosition:inLeftJungle(unit) or MapPosition:inRightJungle(unit)
	end

	function MapPosition:inOuterJungle(unit)
		return MapPosition:inLeftOuterJungle(unit) or MapPosition:inRightOuterJungle(unit)
	end

	function MapPosition:inInnerJungle(unit)
		return MapPosition:inLeftInnerJungle(unit) or MapPosition:inRightInnerJungle(unit)
	end

	function MapPosition:inLeftJungle(unit)
		return MapPosition:inTopLeftJungle(unit) or MapPosition:inBottomLeftJungle(unit)
	end

	function MapPosition:inLeftOuterJungle(unit)
		return MapPosition:inTopLeftOuterJungle(unit) or MapPosition:inBottomLeftOuterJungle(unit)
	end

	function MapPosition:inLeftInnerJungle(unit)
		return MapPosition:inTopLeftInnerJungle(unit) or MapPosition:inBottomLeftInnerJungle(unit)
	end

	function MapPosition:inTopLeftJungle(unit)
		return regions["topLeftOuterJungle"]:contains(Point(unit.x, unit.z))
	end

	function MapPosition:inTopLeftOuterJungle(unit)
		return MapPosition:inTopLeftJungle(unit) and not MapPosition:inTopLeftInnerJungle(unit)
	end

	function MapPosition:inTopLeftInnerJungle(unit)
		return regions["topLeftInnerJungle"]:contains(Point(unit.x, unit.z))
	end

	function MapPosition:inBottomLeftJungle(unit)
		return regions["bottomLeftOuterJungle"]:contains(Point(unit.x, unit.z))
	end

	function MapPosition:inBottomLeftOuterJungle(unit)
		return MapPosition:inBottomLeftJungle(unit) and not MapPosition:inBottomLeftInnerJungle(unit)
	end

	function MapPosition:inBottomLeftInnerJungle(unit)
		return regions["bottomLeftInnerJungle"]:contains(Point(unit.x, unit.z))
	end

	function MapPosition:inRightJungle(unit)
		return MapPosition:inTopRightJungle(unit) or MapPosition:inBottomRightJungle(unit)
	end

	function MapPosition:inRightOuterJungle(unit)
		return MapPosition:inTopRightOuterJungle(unit) or MapPosition:inBottomRightOuterJungle(unit)
	end

	function MapPosition:inRightInnerJungle(unit)
		return MapPosition:inTopRightInnerJungle(unit) or MapPosition:inBottomRightInnerJungle(unit)
	end

	function MapPosition:inTopRightJungle(unit)
		return regions["topRightOuterJungle"]:contains(Point(unit.x, unit.z))
	end

	function MapPosition:inTopRightOuterJungle(unit)
		return MapPosition:inTopRightJungle(unit) and not MapPosition:inTopRightInnerJungle(unit)
	end

	function MapPosition:inTopRightInnerJungle(unit)
		return regions["topRightInnerJungle"]:contains(Point(unit.x, unit.z))
	end

	function MapPosition:inBottomRightJungle(unit)
		return regions["bottomRightOuterJungle"]:contains(Point(unit.x, unit.z))
	end

	function MapPosition:inBottomRightOuterJungle(unit)
		return MapPosition:inBottomRightJungle(unit) and not MapPosition:inBottomRightInnerJungle(unit)
	end

	function MapPosition:inBottomRightInnerJungle(unit)
		return regions["bottomRightInnerJungle"]:contains(Point(unit.x, unit.z))
	end

	function MapPosition:inTopJungle(unit)
		return MapPosition:inTopLeftJungle(unit) or MapPosition:inTopRightJungle(unit)
	end

	function MapPosition:inTopOuterJungle(unit)
		return MapPosition:inTopLeftOuterJungle(unit) or MapPosition:inTopRightOuterJungle(unit)
	end

	function MapPosition:inTopInnerJungle(unit)
		return MapPosition:inTopLeftInnerJungle(unit) or MapPosition:inTopRightInnerJungle(unit)
	end

	function MapPosition:inBottomJungle(unit)
		return MapPosition:inBottomLeftJungle(unit) or MapPosition:inBottomRightJungle(unit)
	end

	function MapPosition:inBottomOuterJungle(unit)
		return MapPosition:inBottomLeftOuterJungle(unit) or MapPosition:inBottomRightOuterJungle(unit)
	end

	function MapPosition:inBottomInnerJungle(unit)
		return MapPosition:inBottomLeftInnerJungle(unit) or MapPosition:inBottomRightInnerJungle(unit)
	end
-- }

--UPDATEURL=
--HASH=E0313F787E97004649090435143BC6F3